2012-03-14 12 views
2

出力ウィンドウに進捗メッセージを出力するために、重大度パラメータ0のRAISERRORを使用しているT-SQLストアドプロシージャがいくつかあります。私はすでにWITH NOWAITを使用して、メッセージがすぐに印刷されるようにしています。T-SQL RAISERROR WITH NOWAITのみ文字列全体ではなく1文字を出力する

しかし、文字列がRAISERRORに渡されても、最初の文字だけが画面に表示されます。例えば

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

のみ画面に単一の 'P' を印刷します。

これがなぜ、どのように修正できるのか、誰か知っていますか?

おかげで非常に多く、

マーティン。変数が無い長さのcharとして宣言されている

+0

でも続く 'WAITFOR'文で(ここでそれを再現することができません。バッチが完了したときではなく実行中の結果*を確実に確認する) –

+2

エラーメッセージは、あなたの例で示したようにリテラル文字列ですか、それとも変数ですか?文字列をRAISERRORに '渡す'と言いました。長さを持たないcharまたはvarchar変数が宣言されている可能性があります。その場合、デフォルトで長さ1になりますので、エラーの最初の文字しか取得できません。 – Pondlife

+0

等しく再現できません。どのようにprocを使用しているかを表示してください。たとえば、長さを持たないvarcharとして定義されているフィールドにエラーメッセージ文字列をキャッチしていますか? – kaj

答えて

5

、1

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

出力までの長さのデフォルト:

P 
+1

ありがとうございました。宣言された長さの変数を使用するように変更されました。すべて今働いている! – MartynJones87

+1

同じことが私のために行く、ありがとう。 –

関連する問題