解决'字符串或二进制数据将被截断'错误

Art*_*t F 0 sql t-sql sql-server stored-procedures

Declare @STAF_TO NVARCHAR(100)
Run Code Online (Sandbox Code Playgroud)

我有以下查询作为SQL Server存储过程的一部分:

SELECT @SF_TO = TP.FRST_NAME + ' ' + TP.MDLE_NAME + ' ' + TP.LAST_NAME
FROM tbl_Sf TS 
INNER JOIN tbl_Pl TP ON (TS.POPL_PK = TP.POPL_PK)
WHERE TS.SF_PK = @ID
Run Code Online (Sandbox Code Playgroud)

我知道基于我在此之前插入的print语句,@ID它等于140(Type INT).当我尝试单独执行此查询时,它工作正常.

但是,当我尝试将其作为存储过程的一部分运行时,我收到以下错误:

消息8152,级别16,状态13,过程Proc_Name,行57
字符串或二进制数据将被截断.

第57行是SELECT语句在上面查询的位置.任何人都有任何想法为什么会发生这种情况?

编辑:我试图改变NVARCHAR(100)NVARCHAR(200)NVARCHAR(MAX),仍然得到了错误.此外,如果我单独运行它,查询工作正常(100个字符).

Aar*_*and 7

您的列的定义几乎可以肯定:

FRST_NAME
MDLE_NAME
LAST_NAME
Run Code Online (Sandbox Code Playgroud)

最多可添加98个字符(空格为+2).

我建议宣称@SF_TO大于NVARCHAR(100)(但确切地说,我不知道).

当然,错误消息很难解决问题.如果输出中包含更多细节,那将会很棒.请对此Connect项目进行投票/评论.

  • +1,并投票.那个错误信息太荒谬了! (3认同)