存储过程出错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的转换时,转换失败。 展开
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的转换时,转换失败。 展开
1个回答
展开全部
set @sql = 'update table set date=getdate()where '+@strtt+'='+convert(nvarchar(50),@result)
你原来的语句中,用+号连接了一个nvarchar与一个int。此时,系统默认会将nvarchar转成int,然后做算术加法。例如select '2'+1,结果是3。如果想用+号做字符串连接,需要保证+号前后都是字符类型。
你原来的语句中,用+号连接了一个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
你报的什么错?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询