“游标已存在”和“游标已打开”的错误。每次执行下面的存储过程,然后取消查询都会出现
“消息 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
“消息 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
deallocate convertCursor取消查询,这两句执行不到。再次查询就提示已经存在了,是吗?
--fetch next from convertCursor into @DANo,@DATime,@LogTime,@MeterType,@meterno,@Qty
end
close convertCursor
deallocate convertCursor