Tsql T-SQL RAISERROR,NOWAIT仅打印一个字符而不是整个字符串

Tsql T-SQL RAISERROR,NOWAIT仅打印一个字符而不是整个字符串,tsql,sql-server-2008-r2,Tsql,Sql Server 2008 R2,我有几个T-SQL存储过程,其中我使用严重性参数为0的RAISERROR将进度消息打印到输出窗口。我已经在使用NOWAIT来确保消息立即打印出来 然而,不管我传递给RAISERROR的字符串是什么,只有第一个字符被打印到屏幕上 例如: RAISERROR('Profiles Complete', 0, 1) WITH NOWAIT 仅在屏幕上打印一个“p” 有人知道这是为什么,或者我如何修复它吗 非常感谢 Martyn.当变量声明为无长度的char时,长度默认为1 DECLARE @c cha

我有几个T-SQL存储过程,其中我使用严重性参数为0的RAISERROR将进度消息打印到输出窗口。我已经在使用NOWAIT来确保消息立即打印出来

然而,不管我传递给RAISERROR的字符串是什么,只有第一个字符被打印到屏幕上

例如:

RAISERROR('Profiles Complete', 0, 1) WITH NOWAIT
仅在屏幕上打印一个“p”

有人知道这是为什么,或者我如何修复它吗

非常感谢


Martyn.

当变量声明为无长度的char时,长度默认为1

DECLARE @c char
SET @c = 'Profiles Complete'
PRINT @c
输出:

P

无法在此处复制它(即使使用后续的
WAITFOR
语句以确保我在执行期间看到结果,而不是在批处理完成时看到结果),错误消息是您在示例中显示的文本字符串,还是变量?您提到将字符串“传递”到RAISERROR,这使我认为您可能声明了一个没有长度的char或varchar变量。在这种情况下,默认情况下,它的长度为1,因此您只能得到错误的第一个字母。同样无法复制。请说明您是如何使用该过程的。例如,您是否将错误消息字符串捕获到定义为varchar且没有长度的字段中?Pondlife:我使用的是与示例中所示完全相同的文字字符串,但是,我确实尝试过使用变量,同样的情况也发生在仅打印第一个字符时。虽然,当我尝试变量时,我没有声明大小,所以,我将再次尝试变量,但这次声明大小。非常感谢,改为使用声明长度的变量。现在都开始工作了!