我在SQL Server 2008中执行更新语句:
declare @DynamicSQL nvarchar(500)
set @ecaKey='b3 ff c7 ff b9 ff 93 ff bb ff a5 ff a8 ff 86 ff 94 ff 87 ff a6 ff 9a ff 98 ff d4 ff 90 ff ad ff 8c ff 95 ff cb ff a9 ff 91 ff 9b ff 8f ff b1 ff ac ff c6 ff 92 ff 86 ff af ff b6 ff 87 ff 85 ff 91 ff 90 ff ca ff 88 ff 8b ff cc ff 9d ff b2 ff a7 ff bb ff 9c ff c8 ff cf ff 92 ff 8c ff 87 ff 8c ff bb ff ba ff 8f ff ba ff'
set @DynamicSQL='update '+@sysDBName+'..sys_ecasoftkey set softkey=N'''+@ecaKey+''' where state=''1'''
exec(@DynamicSQL)
它提示:
Message 105,Level 15,state 1, 1 row
The string 'b3 ff c7 ff b9 ff 93 ff bb ff a5 ff a8 ff 86 ff 94 ff 87 ff a6 ff 9a ff 98 ff d4 ff 90 ff ad ff 8c ff 95 ff cb ff a9 ff 91 ff 9b ff 8f ff b1 ff ac ff c6 ff 92 ff 86 ff af ff b6 ff 87 ff 85 ff 91 ff 90 ff ca ff 88 ff 8b ff cc ff 9d ff b2 ff a7 ff bb ff 9c ff c8 ff cf ff 92 ff 8c ff 87 ff 8c ff bb ff ba ff 8f ff ba ff bc ff d4 ff 8b ff b6 ff ba ff bd ff 97 ff a6 ff 98 ff 95 ff 9d ff ab ff aa ff ba ff a5 ff cd ff 9d ff 94 ff c7 ff ba ff bc ff b0 ff 9b' don't have full quote。
Message 102,level 15,state 1, 1 row
'b3 ff c7 ff b9 ff 93 ff bb ff a5 ff a8 ff 86 ff 94 ff 87 ff a6 ff 9a ff 98 ff d4 ff 90 ff ad ff 8c ff 95 ff cb ff a9 ff 91 ff 9b ' nearby has syntax error.
软键和状态列为varchar
。
哪里出错?
答案 0 :(得分:0)
那是因为@DynamicSQL
的长度不够长。改变这样的长度:
declare @DynamicSQL nvarchar(2000)
虽然你当前的字符串(500)足够长,但这个问题恰恰是由于这个原因引起的。
当我改变问题时解决了。