Ton*_*ich 0 sql t-sql sql-server
我在SQL Server 2012中有一个customer表,其'status'列的类型为varchar(1).
此语句给出'字符串或二进制数据将被截断'错误
exec sp_executesql N'update customer set status=''@stat''
where custID=@custID',N'@stat varchar(1),@custID bigint',@stat='B',@custID=940
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,因为我把'B'作为单个字符传递.如果我得到同样的错误@stat=''
但是这句话运行正常:
exec sp_executesql N'update customer set status=''B''
where custid=@custID',N'@custID bigint',@custID=940
Run Code Online (Sandbox Code Playgroud)
似乎有一个我遗漏的微妙问题.有任何想法吗?
您错误地尝试设置status为文字字符串'@stat',而不是变量的值@stat.该字符串'@stat'有五个字符,插入时会被截断VARCHAR(1).尝试:
exec sp_executesql N'update customer set status=@stat
where custID=@custID',N'@stat varchar(1),@custID bigint',@stat='B',@custID=940
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |