2012-03-14 108 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

相關問題