2012-03-14 76 views
2

我有几个T-SQL存储过程,其中我使用严重性参数为0的RAISERROR将进度消息打印到输出窗口。我已经使用WITH NOWAIT来确保邮件立即打印。与NOWAIT T-SQL RAISERROR只打印一个字符,而不是整个字符串

但是,无论我传递给RAISERROR的字符串是什么,只有第一个字符正在打印到屏幕上。

例如:

RAISERROR('Profiles Complete', 0, 1) WITH NOWAIT 

只打印单个 'P' 到屏幕上。

是否有人知道这是为什么或我如何解决它?

非常感谢,

Martyn。

+0

无法这里重现它(即使使用后续'WAITFOR'语句以确保我在*执行过程中看到结果*,而不是在批次完成时) – 2012-03-14 11:01:38

+2

您的错误消息是您在示例中显示的文字字符串还是变量?你提到给RAISERROR'传递'一个字符串,这让我认为你可能有一个char或varchar变量声明没有长度。在这种情况下,默认情况下长度为1,所以你只能得到错误的第一个字母。 – Pondlife 2012-03-14 11:27:41

+0

同样无法重现。请说明你是如何使用proc的,例如你是否将错误消息字符串捕获到定义为varchar而没有长度的字段中? – kaj 2012-03-14 11:30:41

回答

5

当一个变量声明为焦炭没有长度,长度默认为1

DECLARE @c char 
SET @c = 'Profiles Complete' 
PRINT @c 

输出:

P 
+1

非常感谢,更改为使用声明长度的变量。所有工作现在! – MartynJones87 2012-04-11 14:19:52

+1

同样适用于我,谢谢。 – 2015-03-04 11:29:52

相关问题