关于MSSQL存储过程中使用游标的一个小例子(学习)
聲明:本例轉(zhuǎn)自http://hi.chinaunix.net/?214950/viewspace-1713,主要是為了學(xué)習(xí)之用
比如有個(gè)表,內(nèi)容如下
id,text
1,春花秋月何時(shí)了
2,往事知多少
3,小樓昨夜又春風(fēng)
4,古國(guó)不堪回首月明中
......
其中id為系列號(hào),text為文本內(nèi)容,我想使用個(gè)sql語(yǔ)句,達(dá)到如下效果:
查詢text列,查詢的值累加,即查詢結(jié)果顯示如下:
春花秋月何時(shí)了 往事知多少 小樓昨夜又春風(fēng) 古國(guó)不堪回首月明中 ...
用存儲(chǔ)過(guò)程+游標(biāo)實(shí)現(xiàn),示例如下
ALTER PROCEDURE? [dbo].[abc]
??? -- Add the parameters for the stored procedure here
??? ?@p1 int
???
AS
BEGIN
??? -- SET NOCOUNT ON added to prevent extra result sets from
??? -- interfering with SELECT statements.
??? SET NOCOUNT ON;
??? declare @ttt varchar(100);
??? declare @bbb varchar(10);
??? set @ttt=''
??? set @bbb=''
??? declare mycur cursor for
???? select meno from test where gid= @p1
??? open mycur
???? fetch next from mycur into @bbb
???? WHILE @@FETCH_STATUS = 0
???? BEGIN
????? set @ttt=@ttt+@bbb
????? fetch next from mycur into @bbb
??? end
??? close mycur
??? select @ttt
??? -- Insert statements for procedure here
???
END
?
下面是自己的小測(cè)試:
ALTER PROCEDURE dbo.fetchtest
?/*
?(
?@parameter1 int = 5,
?@parameter2 datatype OUTPUT
?)
?*/
AS
declare @ss varchar(2000),@aa varchar(2000),@cc varchar(2000)
set @ss=''
set @aa=''
set @cc=''
?SELECT @@CURSOR_ROWS
DECLARE authors_cursor CURSOR FOR
SELECT top 100 RegionalName,userid FROM areaInfo
OPEN authors_cursor
FETCH NEXT FROM authors_cursor into @ss,@cc--這里要與字段數(shù)相同
while @@FETCH_STATUS=0
begin
?set @aa=@aa+ltrim(@cc)
?FETCH NEXT FROM authors_cursor into @ss,@cc--這里要與字段數(shù)相同
end
SELECT @@CURSOR_ROWS
SELECT @aa
CLOSE authors_cursor
DEALLOCATE authors_cursor
轉(zhuǎn)載于:https://www.cnblogs.com/dongpo888/archive/2009/02/24/1397388.html
總結(jié)
以上是生活随笔為你收集整理的关于MSSQL存储过程中使用游标的一个小例子(学习)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 银行登录控件仿制--防钩子,防嗅探
- 下一篇: [C++对象模型][9]虚继承与虚函数表