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