首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

动态SQL得不到变量的值解决办法

2012-02-22 
动态SQL得不到变量的值我在一存储过程中先用一@sql insertinto...后set@NewsID@@IDENTITYprint@NewsID--

动态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串中。

热点排行