问得太范了,为什么要返回游标??
游标用于循环处理数据,效率低能耗高
https://www.cnblogs.com/knowledgesea/p/3699851.html
其实游标就跟集合中的下标是 一样的,功能就是去查找数据。存储过程中 如果你不懂 就直接用 for loop循环呗 ,里面的游标不用你自己操作
这是我写的一个测试的存储过程:
create proc tb1_proc(
@level int,
@cur2 cursor varying output
)
as
declare @mycur cursor
declare @mytype tb1_type --type(id int ,name nvarchar(50))自定义类型
declare @id int, @name nvarchar(50)
begin
if @level=3
begin
--exec cur_proc @mycur output
set @mycur=cursor for
select * from tb1
open @mycur
fetch next from @mycur into @id, @name
while @@FETCH_STATUS=0
begin
insert into @mytype values(@id,@name)
fetch next from @mycur into @id,@name
end
set @cur2=cursor for
select * from @mytype
--open @cur2
end
open @cur2
end
调用:
declare @mycur3 cursor
declare @id int, @name nvarchar(50)
begin
exec tb1_proc 3,@cur2=@mycur3 output
fetch next from @mycur3 into @id,@name
while(@@fetch_status=0)
begin
print convert(nvarchar,@id)+'--'+@name
fetch next from @mycur3 into @id,@name
end
end
结果:
报错:消息 16950,级别 16,状态 2,第 6 行
目前没有为变量 '@mycur3' 分配游标。
@@fetch_status值为-1
请问什么原因,怎么解决?