【发布时间】:2012-03-19 22:11:06
【问题描述】:
我有几个 T-SQL 存储过程,我使用 RAISERROR 和 0 严重性参数将进度消息打印到输出窗口。我已经在使用 WITH NOWAIT 来确保立即打印消息。
但是,无论我将什么字符串传递给 RAISERROR,只有第一个字符会打印到屏幕上。
例如:
RAISERROR('Profiles Complete', 0, 1) WITH NOWAIT
只在屏幕上打印一个“P”。
有人知道这是为什么或我该如何解决吗?
非常感谢,
马丁。
【问题讨论】:
-
无法在此处重现它(即使有一个成功的
WAITFOR语句,以确保我在 执行期间而不是在批处理完成时看到结果) -
您的错误消息是您在示例中显示的文字字符串,还是变量?您提到将字符串“传递”给 RAISERROR,这让我认为您可能声明了一个没有长度的 char 或 varchar 变量。在这种情况下,默认情况下它的长度为 1,因此您只会得到错误的第一个字母。
-
同样无法重现。请说明您如何使用 proc,例如,您是否将错误消息字符串捕获到定义为没有长度的 varchar 的字段中?
-
Pondlife:我正在使用与示例中完全相同的文字字符串,但是,我确实尝试使用变量,并且仅打印第一个字符时发生了同样的事情。虽然,当我尝试变量时,我确实声明了它没有大小,所以我会再次尝试变量,但这次声明它的大小。