我有几个T-SQL存储过程,其中我使用严重性参数为0的RAISERROR将进度消息打印到输出窗口。我已经使用WITH NOWAIT来确保邮件立即打印。与NOWAIT T-SQL RAISERROR只打印一个字符,而不是整个字符串
但是,无论我传递给RAISERROR的字符串是什么,只有第一个字符正在打印到屏幕上。
例如:
RAISERROR('Profiles Complete', 0, 1) WITH NOWAIT
只打印单个 'P' 到屏幕上。
是否有人知道这是为什么或我如何解决它?
非常感谢,
Martyn。
无法这里重现它(即使使用后续'WAITFOR'语句以确保我在*执行过程中看到结果*,而不是在批次完成时) – 2012-03-14 11:01:38
您的错误消息是您在示例中显示的文字字符串还是变量?你提到给RAISERROR'传递'一个字符串,这让我认为你可能有一个char或varchar变量声明没有长度。在这种情况下,默认情况下长度为1,所以你只能得到错误的第一个字母。 – Pondlife 2012-03-14 11:27:41
同样无法重现。请说明你是如何使用proc的,例如你是否将错误消息字符串捕获到定义为varchar而没有长度的字段中? – kaj 2012-03-14 11:30:41