SQL Server存储过程和游标有关实例以及相关网址
Posted 名扬博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server存储过程和游标有关实例以及相关网址相关的知识,希望对你有一定的参考价值。
内含游标的存储过程实例
第一种写法
GO BEGIN IF (object_id(\'PT_FAULT_REPORT\', \'P\') is not null) drop proc PT_FAULT_REPORT; END GO CREATE PROCEDURE PT_FAULT_REPORT (@index int, @stop_time DATETIME, @start_time DATETIME) AS DECLARE @departmentindex int, @departmentname nvarchar(100), @entitycount int, @allcount int, @fixtime int, @fixcount int; declare test_cur cursor for select field1, field2, field3, field4 form table where field1=@index and field2>@stop_time or filed3<@start_time ; OPEN test_cur; DECLARE @TableTemp TABLE(departmentindex int,departmentname nvarchar(100),entitycount int,allcount int,fixtime int,fixcount int);--定义表变量 FETCH NEXT FROM test_cur INTO @departmentindex, @departmentname, @entitycount, @allcount, @fixtime,@fixcount; INsert @TableTemp values(@departmentindex, @departmentname, @entitycount, @allcount, @fixtime,@fixcount);--给表变量插值 WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM test_cur INTO @departmentindex, @departmentname, @entitycount, @allcount, @fixtime,@fixcount; INsert @TableTemp values(@departmentindex, @departmentname, @entitycount, @allcount, @fixtime,@fixcount);
--select departmentindex=@departmentindex, departmentname=@departmentname,entitycount=@entitycount, allcount=@allcount, fixtime=@fixtime,fixcount=@fixcount; END ; CLOSe test_cur Deallocate test_cur; select * from @TableTemp;--存储过程返回数据
测试存储过程
GO DECLARE @starttime DATETIME,@endtime DATETIME; set @starttime =GETDATE(); set @endtime=GETDATE()-30; EXEC PT_FAULT_REPORT 3,@starttime,@endtime;
第二种传游标写法
GO BEGIN IF (object_id(\'PT_FAULT_REPORT\', \'P\') is not null) drop proc PT_FAULT_REPORT; END GO CREATE PROCEDURE PT_FAULT_REPORT (@business_index INTEGER , @start_time DATETIME , @stop_time DATETIME, @ds_cur CURSOR VARYING OUTPUT) AS BEGIN SET @ds_cur = CURSOR FORWARD_ONLY STATIC FOR select field1, field2, field3, field4 form table where field1=@index and field2>@stop_time or filed3<@start_time ; OPEN @ds_cur END;
测试存储过程
GO DECLARE @MyCursor CURSOR,@starttime DATETIME,@endtime DATETIME; set @starttime =GETDATE(); set @endtime=GETDATE()-30; EXEC PT_FAULT_REPORT 3,@starttime,@endtime,@ds_cur = @MyCursor OUTPUT; FETCH NEXT FROM @MyCursor; WHILE (@@FETCH_STATUS = 0) BEGIN; FETCH NEXT FROM @MyCursor; END; CLOSE @MyCursor; DEALLOCATE @MyCursor;
第三种写法(测试方法与第一种相似)
GO BEGIN IF (object_id(\'PT_FAULT_REPORT\', \'P\') is not null) drop proc PT_FAULT_REPORT; END GO CREATE PROCEDURE PT_FAULT_REPORT (@business_index int, @stop_time DATETIME, @start_time DATETIME) AS select * from table
http://www.cnblogs.com/kissdodog/archive/2013/07/03/3169470.html
2SQL Server存储过程Return、output参数及使用技巧
http://www.cnblogs.com/zhangchenliang/archive/2013/04/07/3006433.html
3sql2005 返回游标参数的存储过程 【CURSOR VARYING OUTPUT】
http://blog.csdn.net/paolei/article/details/6206004
4SqlServer游标、存储过程及数据块执行
http://blog.csdn.net/superhoy/article/details/7663542
以上是关于SQL Server存储过程和游标有关实例以及相关网址的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 存储过程种游标的使用,print输出问题