2017-06-12 12 views
0

SQL Serverのストアドプロシージャからカスタムエラーをスローしようとしていますが、コンパイル時にエラーが発生しています。問題ははっきりしています。私はbit型のパラメータの値を表示しようとしていますが、私は自分のフォーマット文が間違っていると信じています。私は、次があります。投げ込みエラー - エラーメッセージの正しい書式設定値

EXEC sys.sp_addmessage 
    @msgnum = 60000 
    ,@severity = 16 
    ,@msgText = N'Bad parameter. You cannot pass NULLs to this procedure, UseAlternateEquity (%i), AlternateEquity (%d), PushEmail (%i)' 
        ,@lang  = NULL; 

declare @msg1 NVARCHAR(2048) = FORMATMESSAGE(60000, @UseAlternateEquity, @AlternateEquity, @PushEmail); 
throw 60000, @msg1, 1; 

変数@UseAlternateEquity

誰かが適切なフォーマットタイプをしてくださいが何であるかを教えてもらえ@PushEmailはタイプビットです。私は高低を検索して答えを見つけることができません

答えて

1

@UseAlternateEquityと@PushEmailを渡す前に別のタイプにキャストしてください。あなたは彼らがVARCHARするか、この (私は、私はRAISERRORすることができます2008年だ)

declare @UseAlternateEquityand bit = 1, 
      @PushEmailare bit = 0, 
      @AlternateEquity bit = 1; 

    declare @UseAlternateEquityand_1 int = @UseAlternateEquityand, 
      @PushEmailare_1 int = @PushEmailare, 
      @AlternateEquity_1 int = @AlternateEquity; 

    RAISERROR (N'Bad parameter. You cannot pass NULLs to this procedure, UseAlternateEquity (%u), AlternateEquity (%u), PushEmail (%u)', 
       16, 
       1, 
       @UseAlternateEquityand_1, 
       @AlternateEquity_1, 
       @PushEmailare_1); 
+0

おかげのようにint型にキャストすることができます。変数を渡すときにconvert(int、@ var)を使用して終了しました。 –

関連する問題