关于MSSQL存储过程中使用游标的一个小例子(学习)
聲明:本例轉自http://hi.chinaunix.net/?214950/viewspace-1713,主要是為了學習之用
比如有個表,內容如下
id,text
1,春花秋月何時了
2,往事知多少
3,小樓昨夜又春風
4,古國不堪回首月明中
......
其中id為系列號,text為文本內容,我想使用個sql語句,達到如下效果:
查詢text列,查詢的值累加,即查詢結果顯示如下:
春花秋月何時了 往事知多少 小樓昨夜又春風 古國不堪回首月明中 ...
用存儲過程+游標實現,示例如下
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
?
下面是自己的小測試:
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--這里要與字段數相同
while @@FETCH_STATUS=0
begin
?set @aa=@aa+ltrim(@cc)
?FETCH NEXT FROM authors_cursor into @ss,@cc--這里要與字段數相同
end
SELECT @@CURSOR_ROWS
SELECT @aa
CLOSE authors_cursor
DEALLOCATE authors_cursor
轉載于:https://www.cnblogs.com/dongpo888/archive/2009/02/24/1397388.html
總結
以上是生活随笔為你收集整理的关于MSSQL存储过程中使用游标的一个小例子(学习)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行登录控件仿制--防钩子,防嗅探
- 下一篇: [C++对象模型][9]虚继承与虚函数表