一个存在'游标已存在'问题的存储,大家帮忙[给高分]

dragonsea 2006-08-31 11:41:32
存储的代码是:
create proc insertzhaoshang
as
declare @linkman varchar(200),@tel varchar(200),@company varchar(200),@area varchar(200),@adrr varchar(200),@code varchar(200)
declare @fax varchar(200),@url varchar(200),@title varchar(200),@content varchar(8000),@posttime datetime,@img varchar(200),@cls varchar(200)
declare zs cursor local for select 联系人,电话,公司,地区,地址,邮编,传真,网址,标题,内容,发布时间,图片,类别 from zhaoshang
open zs
fetch zs into @linkman,@tel,@company,@area,@adrr,@code,@fax,@url,@title,@content,@posttime,@img,@cls
while (@@fetch_status<>-1)
begin
declare @num integer
declare us cursor local for select count(*) as n from e_users where company=@company
open us
fetch us into @num
if (@num=0)
begin
insert into e_users (userid,pwd,linkman,telephone,company,province,lianxiaddr,mail,fax,url,model,[datetime])
values('zhaoshang'+convert(varchar(10),getdate()),'123456',@linkman,@tel,@company,@area,@adrr,@code,@fax,@url,0,getdate())
end
fetch zs into @linkman,@tel,@company,@area,@adrr,@code,@fax,@url,@title,@content,@posttime,@img,@cls
end

提示错误:
服务器: 消息 16915,级别 16,状态 1,过程 insertzhaoshang,行 11
名为 'us' 的游标已存在。
服务器: 消息 16905,级别 16,状态 1,过程 insertzhaoshang,行 12
游标已打开。
服务器: 消息 16915,级别 16,状态 1,过程 insertzhaoshang,行 11
名为 'us' 的游标已存在。
服务器: 消息 16905,级别 16,状态 1,过程 insertzhaoshang,行 12
游标已打开。
服务器: 消息 16915,级别 16,状态 1,过程 insertzhaoshang,行 11
名为 'us' 的游标已存在。
......
请问问题出在那里呀,如何解决.给分
...全文
689 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
goto_goto 2006-12-05
  • 打赏
  • 举报
回复
在内层应加上
close us
deallocate us
LYDF4151 2006-12-05
  • 打赏
  • 举报
回复
每层游标一定要释放。
jcyluck 2006-12-05
  • 打赏
  • 举报
回复
释放游标
beijingbeerman 2006-12-04
  • 打赏
  • 举报
回复
up
zhgc1983 2006-09-01
  • 打赏
  • 举报
回复
我也碰到过,和楼上说的一样!
hellowork 2006-09-01
  • 打赏
  • 举报
回复
游标嵌套时必须在内层游标使用结束后关闭并释放内层游标,然后在继续外层下一轮循环时重新创建内层游标.这样试试:
declare @num integer
declare us cursor local for ... where company=@company
open us
fetch next us into @num
if (@num=0)
begin
insert into e_users ...
end
close us /*加上此行来关闭内层游标*/
deallocate us /*加上此行来释放内层游标*/

fetch zs into ... /*继续外层游标循环*/
i9988 2006-09-01
  • 打赏
  • 举报
回复
不管内层外层,游标在使用完都必须关闭和释放

否则,第二次调用存储过程的时候换是有这个错误
dragonsea 2006-09-01
  • 打赏
  • 举报
回复
谢啦

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧