存储过程出错nvarchar转换为int

declare@strttnvarchar(50)declare@resultintdeclare@sqlnvarchar(200)set@result=111set@s... declare @strtt nvarchar(50)
declare @result int
declare @sql nvarchar(200)
set @result=111
set @strtt='ID'
set @sql = 'update table set date=getdate()where '+@strtt+'='+@result
print @sql

Conversion failed when converting the nvarchar value 'update table set date=getdate()where ID=' to data type int.
nvarchar值'update table set date=getdate()where ID='数据类型为int的转换时,转换失败。
展开
 我来答
frogley
2012-03-21 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1065万
展开全部
set @sql = 'update table set date=getdate()where '+@strtt+'='+convert(nvarchar(50),@result)
你原来的语句中,用+号连接了一个nvarchar与一个int。此时,系统默认会将nvarchar转成int,然后做算术加法。例如select '2'+1,结果是3。如果想用+号做字符串连接,需要保证+号前后都是字符类型。
更多追问追答
追问
这个是不行的~
追答
我在自己机器上是可以的
declare @strtt nvarchar(50)
declare @result int
declare @sql nvarchar(200)
set @result=111
set @strtt='ID'
set @sql = 'update table set date=getdate()where '+@strtt+'='+convert(nvarchar(50),@result)
select @sql
结果是
update table set date=getdate()where ID=111
你报的什么错?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式