动态SQL得不到变量的值
我在一存储过程中先
用一@sql= 'insert into ... '
后
set @NewsID=@@IDENTITY
print @NewsID --正常
set @sql= 'insert into '+@dbname+ '.[dbo].[articleofchannel] (channelid,articlepageid) values( '+@ChannelID+ ', '+@NewsID+ ' ) ' --在这儿就出错了
print @sql
--exec(@sql)
调用的时候总是语法错误
为啥在动态语句中得不到变量的值?
服务器: 消息 245,级别 16,状态 1,过程 A_PROC_NEWS_INSERT,行 59
将 varchar 值 'insert into szonlinenew.[dbo].[articleofchannel] (channelid,articlepageid) values(1, ' 转换为数据类型为 int 的列时发生语法错误。
------解决方案-------------------- --需要先转换为 字符型,如:
set @sql= 'insert into '+@dbname+ '.[dbo].[articleofchannel] (channelid,articlepageid)
values( '+ cast(@ChannelID as varchar(100))+ ', '+ cast(@NewsID as varchar(100))+ ' ) ' --在这儿就出错了
------解决方案--------------------数值型或日期型,都需要先转换为字符型,再连接到SQL串中。