您的位置:首页 > 数据库

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

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

create proc pc_whc
as
select * 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


最后要说明的是,小弟初学,哪里有不对的请指出,感激不尽!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: