数据库-存储过程-游标-函数

一、存储过程
   SQL99标准提出的SQL-invoked-rountines的概念,它开分为存储过程与函数,这里首先介绍存储过程
   存储过程分为三类:系统存储过程(如:sp_help)、自定义存储过程、扩展存储过程
   存储过程可以理解为一个SQL语句块,完成一些复杂的功能,当然可以包含应用程序的业务,比如:分页,生成订单号等,存储过程可以接收应用程序传递的参数,并将查询的结果返回给应用程序
  1、存储过程的优点:
    1)、运行效率高,因为存储过程不会在每一次调用时都解释执行,随便说一句,SQL执行后的执行计划会放在缓存中,这样下一次相同的SQL执行就不用再次优化了,从而加快速度
    2)、存储过程降低了客户机与服务器的通信量,使用存储过程,就不用在应程序中拼SQL传回服务器,只须要存储过程名与参数就可以了
    3)、方便实施企业规则,可以在存储过程里加入业务逻辑
  2、存储过程的使用(重复使用)
    创建:

  create proc pc_whcasselect * from whc/*执行*/exec pc_whc

二、游标
    游标可以理解为一个"指针",其指向的是一条记录,当用select语句得到一个结果集时,我们可以将它放到一个游标中,然后通过移动游标来读取每一条数据,并进行处理,感觉有点"遍历"数据
游标的使用:
1、 定义游标:declare cursor_name cursor
                   For select 语句;
2、 打开游标:open cursor_name
3、 循环访问游标中的每一行数据:
Fetch next from cursor_name into @参数列表
4、 游标的状态:@@fetch_status,用于判断游标fetch的状态,当为0时正常,不为一时异常
5、关闭并释放资源
例:

declare @whcId nchar(5),@whc int;
/*定义一个游标*/
declare whc_cursor cursor 
for select CustomerID,EmployeeID from dbo.Orders
/*打开一个游标*/
open whc_cursor
/*移动指针,将数据放到变量中*/
fetch next from whc_cursor into @whcId,@whc
while @@fetch_status = 0
begin print @whcid+' '+convert(nchar(5),@whc)
fetch next from whc_cursor  into @whcId,@whc
end
close whc_cursor
deallocate whc_cursor

三、函数
函数相信大家都很清楚了,传递参数,然后返回一个结果,SQL中的函数也大致差不多,返回时使用ruturn,可以是int、varchar,table等类型,有了函数就可以把一些功能在一起,比如对数据的处理等
函数的创建(例子说明):

create function fun_whc(
@str varchar(50)
)
returns varchar(100)
as
begin declare @List varchar(200) set @List=@str+'My friend'
--返回值return @List
end
--调用
select DemoName,dbo.fun_whc(DemoName) from whc

  最后要说明的是,小弟初学,哪里有不对的请指出,感激不尽!!!

 

转载于:https://www.cnblogs.com/xin_ny/archive/2011/09/25/sql_proc_function.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【离散数学中的数据结构与算法】四 加法法则与乘法法则

文章目录1 加法法则2 乘法法则3 例子3.1 例一3.2 例二3.3 例三4 总结1 加法法则 加法法则: 设事件 A 有 m 种产生方式, 事件 B 有n 种产生方式,则当 A 与 B 产生的方式不重叠时,“事件 A 或 B 之一” 有 mn 种产生方式。 加法法…

实现上移的存储过程

--上移存储过程 create proc sp_sort id int as declare SortID int --排序位置 declare TempSortID int --临时排序位置 declare TempID int --临时编号 begin transaction select SortIDSortID from [User] where [ID]ID --找出想修改顺序的用户的当前当前排序 select Tem…

前端学习(310):清除浮动的方法

我们经常把高度塌陷问题也叫做常见的几种清除浮动的方法 高度塌陷问题—父元素高度自适应,子元素float后,造成父元素高度为0,就叫做高度塌陷问题 给父元素一个高度 缺点:无法高度自适应 父元素{overflow:hidden;} 缺点&#xf…

【离散数学中的数据结构与算法】五 排列与组合一

在leetcode刷题过程中,遇到过很多关于排列组合的问题。弄清楚排列组合的相关原理,是非常有用处的。 文章目录1 问题2 排列-有序选取2.1 重复选取-可重排列2.2 不重复选取-排列2.21 全排列3 例题4 总结1 问题 设集合S包含n个元素,从S中选取r个…

Google Maps 地址转化成坐标

http请求格式http://maps.google.com/maps/geo?q查询关键字&outputkml(输出格式可以 为xml kml json)&oeutf8&sensortrue或者false&key你的apikey示例http://maps.google.com/maps/geo?q湖南大学软件学院&outputkml&keyabcdefg(api key)输出kml文件如…

【离散数学中的数据结构与算法】六 排列与组合二

接着上一篇学习:【离散数学中的数据结构与算法】五 排列与组合一 上一篇文章主要学习了可重复选取的可重排列和不可重复选取的排列。他们都是在n个不同的对象中选取。 今天我们俩学习的是,当这个n个对象中有相同的元素的时候,排列的相关定理…

sql 2008 使用output避免数据修改后的二次查询

表a (f1 primary key,f2,f3), 表b (f1,f3,f4)现要根据表b修改表a中的相应字段的值,并将修改过的值显示出来,一般用法:1 update a from b set a.f3b.f3 where a.f1b.f12 select a.f1,f2,f3 from a where a.f1 in (select f1 from b)根据sql的…

【离散数学中的数据结构与算法】七 排列与组合三

前两篇文章学习了不可重复选取的排列与可重复选取的可重排列。本篇文章开始学习组合的相关定理。 文章目录1 组合1.1 组合的计算公式2 总结1 组合 跟排列一样。组合也分为不重复选取的组合,与可重复选取的可重组合。本节内容主要学习不可重复选取的组合 从 n 个不…

Silverlight4.0教程之WebBrowser控件(Silverlight内置HTML浏览器控件)

微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最突出的主要体现在几个方面: 开发工具增强:Visual Studio 2010…

【离散数学中的数据结构与算法】八 排列与组合四

上一篇文章学习了组合(不可重复选取的)。今天来将可重复选取的组合学习一下。 文章目录1 可重复选取的组合-可重组合2 总结1 可重复选取的组合-可重组合 现在有4种口味的棒棒糖,你要从中选3个(允许你选同种口味)总共有多少种不同的选法&…

[转]HDFS用户指南(中文版)

目的 本文档可以作为使用Hadoop分布式文件系统用户的起点,无论是将HDFS应用在一个Hadoop集群中还是作为一个单独的分布式文件系统使用。HDFS被设计成可以马上在许多环境中工作起来,那么一些HDFS的运行知识肯定能大大地帮助你对一个集群做配置改进和诊断。…

【离散数学中的数据结构与算法】九 鸽巢原理

鸽巢原理是非常著名的原理,生活正用的也很多。 文章目录1 简单鸽巢原理的应用2 定理(一般性鸽巢原理)2.1 应用3 总结1 简单鸽巢原理的应用 定理(鸽巢原理) 若有 n 个鸽巢, n1 个鸽子,则至少有…

【离散数学中的数据结构与算法】十 汉诺塔

汉诺塔也是经典的算法问题 文章目录1 汉诺塔问题1 汉诺塔问题 法国数学家卢卡斯(Edouard Lucas)在1883年提出了一个数学游戏: 传说在世界中心贝拿勒斯(印度北部)的圣庙里,一块黄铜板上有三根宝石柱。印度…

cross-domain policy file

A cross-domain policy file is an XML document that grants a web client—such as Adobe Flash Player, Adobe Reader, etc.—permission to handle data across multiple domains. When a client hosts content from a particular source domain and that content makes re…

markdown编辑器中数学公式的基本命令

原创链接:https://blog.csdn.net/holdrenminbi/article/details/78229488 常见的Markdown编辑器中数学公式使用 相比于初入Markdown编辑器的小白来说,数学公式的使用是必须要掌握的一门技能。本内容大体的介绍结构如下: 插入公式常用数学运…

Java程序练习-螺旋矩阵

螺旋矩阵时间限制: 1500ms内存限制: 1000kB描述生成一个NxN(N>0)的旋转矩阵,N从键盘输入,每4个字符输出一个数字,右对齐,从1开始至NxN,顺时针成螺旋状,例如:输入4则生成1--16的矩…

【离散数学中的数据结构与算法】十一 错排问题

错排问题比较难,但是也是经典算法问题 文章目录1 错排问题2 总结1 错排问题 家中阳台有10盆不同的花,为保持新鲜感,希望每天重新摆放,使得每盆花都不在第一天放的位置。那么最多可以保持多少天每天摆法都不同? 这是一…

Jquery的ajax在IE提交数据乱码解决方法

IE的编码和ff,chrome都不同,ajax提交数据乱码,尤其是中文,解决方法其实很简单首先,保持utf-8编码和post提交数据是必要的。其次将参数用escape编码再发送。比如xxx.aspx?uescape(username) 转载于:https://www.cnblog…