建议使用OUTPUT游标参数
OUTPUT游标参数用来将存储过程的局部游标传递回调用批处理、存储过程或触发器。
比如:use pubs
IF EXISTS(SELECT name FROM sysobjects
WHERE name='titles_cursor' and type='P')
DROP PROCEDURE title_cursor
GO
CREATE PROCEDURE titles_cursor @titles_cursor CURSOR VARYING OUTPUT
AS
SET @titles_cursor=CURSOR
FORWARD_ONLY STATIC FOR
SELECT * FROM titles
OPEN @titles_cursor
GO
接下来,着性一个批处理,声明一个局部游标变量,执行上述过程以将游标赋给局部变量
然后从该游标提取行。
use pubs
go
declare @mycursor cursor
exec titles_cursor @titles_cursor=@mycursor output
while(@@fetch_status=0)
begin
fetch next from @mycursor
end
close @mycursor
deallocate @mycursor
go
OUTPUT游标参数用来将存储过程的局部游标传递回调用批处理、存储过程或触发器。
比如:use pubs
IF EXISTS(SELECT name FROM sysobjects
WHERE name='titles_cursor' and type='P')
DROP PROCEDURE title_cursor
GO
CREATE PROCEDURE titles_cursor @titles_cursor CURSOR VARYING OUTPUT
AS
SET @titles_cursor=CURSOR
FORWARD_ONLY STATIC FOR
SELECT * FROM titles
OPEN @titles_cursor
GO
接下来,着性一个批处理,声明一个局部游标变量,执行上述过程以将游标赋给局部变量
然后从该游标提取行。
use pubs
go
declare @mycursor cursor
exec titles_cursor @titles_cursor=@mycursor output
while(@@fetch_status=0)
begin
fetch next from @mycursor
end
close @mycursor
deallocate @mycursor
go
解决方案 »
- sql server2000如何查看表结构与列属性
- 关于触发器的一个问题
- 关于行列转换(非常急,在线等)
- 事务处理,如何实现数据库的事务处理!请大虾回答!谢谢!
- ODBC问题,会的请进来指导,不会的也来学学!
- 一个两层查询的问题。。请高手们帮忙看看。。50分。。。
- [对比问题]一样的数据库,为何情况会有这么大的不同!
- 哪本SQL SERVER的入门书比较好?
- 我在计算时,如果分母为0就出错了怎么解决?Divide by zero error encountered.
- 怎样清除这样的冗余(考虑用SQL语句)。欢迎大力等高手加入。
- 向高手请教:怎样让存储过程不返回警告信息?
- 怎样取得字符串的最后一个字符.
这是联机帮助上的原文
参数的数据类型。除 table 之外的其他所有数据类型均可以用作存储过程的参数。但是,cursor 数据类型只能用于 OUTPUT 参数。如果指定 cursor 数据类型,则还必须指定 VARYING 和 OUTPUT 关键字。有关 SQL Server 提供的数据类型及其语法的更多信息,请参见数据类型。
2.根据处理要求,可以用输出游标,参考1楼的帖出的帮助,也可以参考联机帮助上create procdure部分
也可以直接返回表结果集,类似这样:
create procedure sp_GetAAVolunteerListTmp
@AdminID char(10),
@ActionType char(10),
@StartDate datetime,
@EndDate datetime
as
begin
set nocount on
declare @table table(ID varchar(100),
GroupName varchar(100),
GroupID varchar(100),
JoinInDate varchar(100),
ApproveDate varchar(100),
Name varchar(100),
Creator varchar(100),
VolunteerID varchar(100),
PrimaryEmail varchar(100),
CountyName varchar(100),
UserName varchar(100),
ReceivableCode varchar(100),
LastSign varchar(100),
LastProfile varchar(100),
LastPass varchar(100))-- ....处理过程
select * from @table
end
go--调用
exec sp_GetAAVolunteerListTmp '1','1','2004-1-1','2004-1-1'