6

ストアドプロシージャウィッチを時々 RAISERROR()と書きました。私はそれを次のようなエンティティフレームワークを介して実行します:

using( MyModelEntities conn = new MyModelEntities() ) {
    conn.MyStoredProcedure(input_p, output_p);
}

ストアドプロシージャ:

create procedure dbo.MyStoredProcedure(
    @input   nvarchar(255),
    @output int out
)
as
begin
    ...
        RAISERROR (N'My Exception....', 10, 1);
    ...
end
go

エラーに関する情報を入手する機会はありますか?

4

3 に答える 3

4

SQL Server の例外レベル 1 から 10 は情報提供用であり、アプリケーションにエラーを発生させません。

レベルを 11 から 16 の間で変更して、SP からエラーを発生させます。

于 2016-06-23T14:14:55.770 に答える
2

例外を表示して、これを try/catch に入れることはできますか? それとも、デバッグモードに入ってみることができますか?

于 2012-05-01T14:03:55.927 に答える
0

これが私がこれを処理する方法です:

create procedure dbo.MyStoredProcedure(
    @input   nvarchar(255),
    @output  text out
)
as
begin
    ...
      SELECT @message = convert(varchar, getdate(), 108) + ': My Exception....'
      SET @output = CAST(@message AS text) -- send message to c#/.net
      RAISERROR(@message,0,1) WITH NOWAIT  -- send message to SQL Server Management Studio
    ...
end
go

次に、C#/ EF側で:

public string CallMyStoredProcedure(string input)
{
    var outputParameter = new ObjectParameter("output", typeof(string));
    EntityContext.MyStoredProcedure(input, outputParameter);
    return (string)outputParameter.Value;
}
于 2013-02-21T20:55:07.977 に答える