“游标已存在”和“游标已打开”为什么会出现???

sswp7 2014-07-24 03:33:47
“游标已存在”和“游标已打开”的错误。

每次执行下面的存储过程,然后取消查询都会出现
“消息 16915,级别 16,状态 1,过程 Nsp_ImpTanHouse_GSHP_Solar_Datas,第 41 行
名为 'convertCursor' 的游标已存在。
消息 16905,级别 16,状态 1,过程 Nsp_ImpTanHouse_GSHP_Solar_Datas,第 46 行
游标已打开。

(1 行受影响)

(1 行受影响)

(1 行受影响)”




问题:

“游标已存在”和“游标已打开”为什么会出现??? 是因为查询没有执行完,被我取消了吗?



ALTER proc [dbo].[Nsp_ImpTanHouse_GSHP_Solar_Datas]
as
declare @DANo Char(32)
declare @DATime Datetime
declare @LogTime Datetime
declare @MeterType Char(4)
declare @MeterNo Char(20)
declare @Qty Decimal(18,6)
declare @sql nvarchar(800)



declare convertCursor cursor for
select replace(replace(replace(replace(convert(nvarchar(25),getdate(),121),'-',''),' ',''),':',''),'.','') as DANo,
[Datetime] as DATime,[Datetime] as LogTime,'' as MeterType,PointCode as MeterNo,DataValue as Qty from
TanHouse.dbo.T_Dalist
where lable = 0 or lable is null
order by DATime asc
open convertCursor
fetch next from convertCursor into @DANo,@DATime,@LogTime,@MeterType,@meterno,@Qty
while @@FETCH_STATUS=0
begin
begin
insert into TanHouse_GSHP_Solar_Datas(DANo,DATime,LogTime,MeterType,Qty,MeterNo) values (@DANo,@DATime,@LogTime,@MeterType,@Qty,@MeterNo)
begin
set @sql='Update TanHouse.dbo.T_Dalist set lable=1 where PointCode='''+@MeterNo+''' and [Datetime]='''+convert(nvarchar(25),@DATime,120)+''''
--print @sql
exec (@sql)
end
end
fetch next from convertCursor into @DANo,@DATime,@LogTime,@MeterType,@meterno,@Qty
end
close convertCursor
deallocate convertCursor
set nocount on
...全文
958 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wu8313 2016-05-13
  • 打赏
  • 举报
回复
遇到过 类似问题,加上 local 后 解决了,谢谢 roy_88
中国风 2014-09-09
  • 打赏
  • 举报
回复
declare convertCursor cursor LOCAL for --加Local试试
卖水果的net 版主 2014-09-09
  • 打赏
  • 举报
回复
在 as 之前加一个 begin 在 deallocate convertCursor 之后,加一个 end 把 set nocount on 干掉不要了 重新建这个过程,再新建一个会话,再跑跑看。
HelloWordGirl 2014-09-09
  • 打赏
  • 举报
回复
set nocount on 这个放在as 后面,set nocount off放在最后
唐诗三百首 2014-09-05
  • 打赏
  • 举报
回复
检查TanHouse_GSHP_Solar_Datas,TanHouse.dbo.T_Dalist上是否有触发器.
KeepSayingNo 2014-09-05
  • 打赏
  • 举报
回复
你把这个fetch语句去掉看看

--fetch next from  convertCursor into @DANo,@DATime,@LogTime,@MeterType,@meterno,@Qty
   end
close convertCursor
deallocate convertCursor
sswp7 2014-09-05
  • 打赏
  • 举报
回复
来拿分啊,来拿分了。
starrycheng 2014-07-25
  • 打赏
  • 举报
回复
为什么没有人跟帖?
starrycheng 2014-07-24
  • 打赏
  • 举报
回复
close convertCursor deallocate convertCursor 取消查询,这两句执行不到。再次查询就提示已经存在了,是吗?

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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