declare @newtablename varcahr(100),@pid int, @i int
set @newtablename ='Usergrade'
set @i=1
set @sql1='SELECT @pid=pid FROM '+@newtablename+' where id='+convert(varchar(50),@i)
exec sp_executesql @sql1,N'@pid int out',@pid out错误提示
消息 1087,级别 15,状态 2,第 1 行
必须声明表变量 "@newtablename"。
set @newtablename ='Usergrade'
set @i=1
set @sql1='SELECT @pid=pid FROM '+@newtablename+' where id='+convert(varchar(50),@i)
exec sp_executesql @sql1,N'@pid int out',@pid out错误提示
消息 1087,级别 15,状态 2,第 1 行
必须声明表变量 "@newtablename"。
set @newtablename ='Usergrade'
set @i=1
set @sql1='SELECT ' + cast(@pid as varchar(10)) + ' = pid FROM ' + '''' + @newtablename + '''' + ' where id = '+convert(varchar(50),@i)
exec sp_executesql @sql1
set @newtablename ='Usergrade'
set @i=1
select @sql1='SELECT @pid=pid FROM '+ @newtablename +' where id='+convert(varchar(50),@i)
exec sp_executesql @sql1,N'@pid int out',@pid out
改成:
declare @newtablename varchar(100),@pid int, @i intvarchar你写成varcahr了..别的没有问题
set @newtablename ='Usergrade'
set @i=1
set @sql1='SELECT @pid=pid FROM '+@newtablename+' where id='+convert(varchar(50),@i)
exec sp_executesql @sql1,N'@pid int out',@pid out错误提示
消息 1087,级别 15,状态 2,第 1 行
必须声明表变量 "@newtablename"。
我定义了@sql1 varchar(100) 的,只是复制掉了。不是那个的原因
set @newtablename ='Usergrade'
set @i=1
set @sql1='SELECT @pid=pid FROM '+@newtablename+' where id='+convert(varchar(50),@i)
exec sp_executesql @sql1,N'@pid int out',@pid out错误提示
消息 1087,级别 15,状态 2,第 1 行
必须声明表变量 "@newtablename"。
我的声明都是真确的,只是我在这里写错了。
我机器上这样后没有问题