CREATE PROCEDURE MODI_JSRQ
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20)DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%';SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN
--这儿应该有问题吧.
EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2')
CLOSE cur
DEALLOCATE cur
挪到FETCH NEXT FROM tab INTO @tabname
这一句的前面试试.
CREATE PROCEDURE MODI_JSRQ
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20)DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%';SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGINEXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2')SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
ENDIF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULLENDEND
END
SELECT @tabname = NULL
CLOSE cur
DEALLOCATE cur
FETCH NEXT FROM tab INTO @tabnameEND
CLOSE tab
DEALLOCATE tabEND
http://blog.csdn.net/roy_88/archive/2007/11/09/1875264.aspx
END
太平了,所以取消游标的语句写错位置了
CREATE PROCEDURE MODI_JSRQ
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20) DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%'; SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2') SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02) END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL END
END
CLOSE cur
DEALLOCATE cur
END
SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname END
CLOSE tab
DEALLOCATE tab END
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20)
DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%';
SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2')
SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0) --如果没有取到数据的话会导致cur不能被关闭及deallocate
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL
END
CLOSE cur
DEALLOCATE cur
END
END
SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname
END
CLOSE tab
DEALLOCATE tab
END
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20)
DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%';
SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2')
SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
IF (@@FETCH_STATUS = 0)
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL
END
END
END
CLOSE cur
DEALLOCATE cur
SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname
END
CLOSE tab
DEALLOCATE tab END
EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2')
SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0) --如果没有取到数据的话会导致cur不能被关闭及deallocate
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL
END
CLOSE cur
DEALLOCATE cur
END
END
SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname
END
CLOSE tab
DEALLOCATE tab
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20)
DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%';
SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2')
SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0) --如果没有取到数据的话会导致cur不能被关闭及deallocate
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL
END
END
END CLOSE cur --应该移动到此处
DEALLOCATE cur --应该移动到此处 SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname
END
CLOSE tab
DEALLOCATE tab
END
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20) DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%'; SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN DECLARE
@cur CURSOR,
@sql nvarchar(4000)
SET @sql = N'
SET @cur = cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2
OPEN @cur
'
EXECUTE sp_executesql @sql, N'@cur CURSOR OUTPUT', @cur OUTPUTSELECT @dhhm = null,@gs02 = null,@kdzh = null
--OPEN cur
FETCH NEXT FROM @cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02) END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL
--看起来少了一个这个: FETCH NEXT FROM @cur INTO @dhhm,@gs02,@kdzh END
CLOSE @cur
DEALLOCATE @cur
END
END
SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname END
CLOSE tab
DEALLOCATE tab END
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20) DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%'; SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2') SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur
FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02) END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL END
END
FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh --加这一句 END
CLOSE cur
DEALLOCATE cur
SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname END
CLOSE tab
DEALLOCATE tab END
游标默认是全局的, 可以在EXEC中定义, 并且在外面引用
CREATE PROCEDURE MODI_JSRQ
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20) DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%'; SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN /*这一句在循环时每次都执行,
而 关闭及销毁游标的语句,你自己看,只在 IF (@gs02 = substring(@tabname,10,3)) 这个分支里。当不走这分支时,就会造成游标重复定义。
将
CLOSE cur
DEALLOCATE cur
两句移到 END 下一行,即 if分支外. 自己调整
由于无法测试,其它问题暂时看不出
*/
EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2') SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02) END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL END
CLOSE cur
DEALLOCATE cur
END
END SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname END
CLOSE tab
DEALLOCATE tab END
而 关闭及销毁游标的语句,你自己看,只在 IF (@gs02 = substring(@tabname,10,3)) 这个分支里。当不走这分支时,就会造成游标重复定义。
AS
BEGIN
DECLARE @dhhm NVARCHAR(12)
DECLARE @gs02 NVARCHAR(4)
DECLARE @kdzh NVARCHAR(20)
DECLARE @tabname NVARCHAR(20)
DECLARE tab cursor for select name from sysobjects where xtype='U' and name like 'Phonedata%';
SELECT @tabname = NULL
OPEN tab FETCH NEXT FROM tab INTO @tabname
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXECUTE('DECLARE cur cursor for select dhhm,gs02,kdzh from '+@tabname+' where myzs!=0 and fjbje>0 and hmzt=2')
SELECT @dhhm = null,@gs02 = null,@kdzh = null
OPEN cur FETCH NEXT FROM cur INTO @dhhm,@gs02,@kdzh
WHILE (@@FETCH_STATUS = 0) --如果没有取到数据的话会导致cur不能被关闭及deallocate
BEGIN
IF (@gs02 = substring(@tabname,10,3))
BEGIN
IF ((@dhhm is NOT NULL AND @gs02 is NOT NULL) OR (@dhhm <>'' AND @gs02 <>''))
BEGIN
IF (@kdzh='' OR @kdzh IS NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
IF (@kdzh!='' OR @kdzh IS NOT NULL)
BEGIN
EXECUTE('UPDATE '+@tabname+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData'+@gs02+' SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
EXECUTE('UPDATE UserData SET Jsrq = dateadd(mm,convert(int,Fjbje/Myzs),Jsrq) WHERE dhhm="'+@dhhm+'" and gs02='+@gs02)
END
SELECT @dhhm = NULL, @gs02 = NULL,@kdzh = NULL
END
END
END CLOSE cur --应该移动到此处
DEALLOCATE cur --应该移动到此处 SELECT @tabname = NULL
FETCH NEXT FROM tab INTO @tabname
END
CLOSE tab
DEALLOCATE tab
END
以上的代码,执行存储过程报7620000列名不存在等等。