创建带有游标的存储过程sql语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
游标中用到的函数,就是前一篇文章中创建的那个函数。
另外,为了方便使用,把游标放在存储过程中,这样就可以方便地直接使用存储过程来执行游标了。
1create procedure UpdateHKUNo --存储过程里面放置游标
2as
3begin
4
5declare UpdateHKUNoCursor cursor--声明一个游标,查询满足条件的数据
6for select psn_code from person where type='E'and hku_no is null
7
8open UpdateHKUNoCursor --打开
9
10declare@noToUpdate varchar(20) --声明一个变量,用于读取游标中的值
11fetch next from UpdateHKUNoCursor into@noToUpdate
12
13while@@fetch_status=0--循环读取
14begin
15--print @noToUpdate
16update person set hku_no=dbo.GetExtUserHKUNo() where
psn_code=@noToUpdate
17fetch next from UpdateHKUNoCursor into@noToUpdate
18end
19
20close UpdateHKUNoCursor --关闭
21
22deallocate UpdateHKUNoCursor --删除
23
24end
25
26--exec UpdateHKUNo
另外,判断数据库中是否存在某一存储过程(Sqlserver 2000):
if exists (select*from sysobjects where name='UpdateHKUNo'and xtype ='P')
print'yse'
else
print'no'
一、无参数的存储过程的创建、修改、执行、删除
create procedure Myprocedure --创建,修改时是alter
as
begin
--do something
select*from sysobjects
end
execute Myprocedure --执行
drop procedure Myprocedure
传入参数,还有另外一种形式
create proc ProcWithParam --创建带有传入参数的存储过程
@id int--参数没有用括号标记
as
begin
select*from sysobjects where id=@id--使用参数
end
exec ProcWithParam 4--执行时,在右边附带参数
drop proc ProcWithParam
三、带传出参数的存储过程(如果要传入、传出的,则把这个和前面第二个综合就好啦):)
create proc ProuWithParamOut(@date datetime out) --不带out,将被默认为传入参数!
as
begin
select@date=crdate from sysobjects where id=1--传出参数只能是一个值,如果不带条件地查找,得到的数值是一个列表,将只取最后一个值end
declare@date datetime--声明一个变量,用于接收存储过程传出的参数exec ProuWithParamOut @date out --调用时,需要右边附带用于接收传出参数的变量
select@date as'存储过程传出的参数'--取得传出的参数,并自定义列名
注:传出参数的声明也可以像传入参数那样写,不需括号
create proc ProuWithParamOut --不带out,将被默认为传入参数!
@date datetime out
as
begin
select@date=crdate from sysobjects where id=4--传出参数只能是一个值,如果不带条件地查找,得到的数值是一个列表,将只取最后一个值end