こんにちは、Error_Number()
をストアドプロシージャから呼び出し元の.NETアプリケーションに渡す最もよい方法は何ですか?ストアドプロシージャから呼び出し元の.NETアプリケーションにError_Number()を取得するには
出力パラメータを設定するか、SELECT
クエリを使用して設定できます。
注:私はデータリーダーを使用しています。
ありがとうございます。
こんにちは、Error_Number()
をストアドプロシージャから呼び出し元の.NETアプリケーションに渡す最もよい方法は何ですか?ストアドプロシージャから呼び出し元の.NETアプリケーションにError_Number()を取得するには
出力パラメータを設定するか、SELECT
クエリを使用して設定できます。
注:私はデータリーダーを使用しています。
ありがとうございます。
これを行うには、試みることができる - SQL try/catch
ブロックであなたのError_number()
をキャッチして、あなたがSqlException
として.NETアプリケーションでキャッチすることができ、エラーを上げます。あなたのSQLストアドプロシージャで
:Royi..Thanks @
// call your stored proc some way...
using(SqlConnection conn = new SqlConnection("server=.;database=Test;Integrated Security=SSPI;"))
using (SqlCommand cmd = new SqlCommand("dbo.YourStoredProcNameHere", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
// possibly add parameters to the stored procedure call....
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch (SqlException ex)
{
// catch SqlException - ex.ErrorNumber contains your error number
string msg = string.Format("Error number: {0}/Message: {1}", ex.Number, ex.Message);
}
}
はこれを試してみてください。
BEGIN TRY
-- Generate a constraint violation error.
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
:
BEGIN TRY -- do something here.... END TRY BEGIN CATCH DECLARE @ErrorNumber INT SELECT @ErrorNumber = ERROR_NUMBER() RAISERROR (N'The error code is: %d', 16, -- Severity. 1, -- State. @ErrorNumber, -- First substitution argument. ''); -- Second substitution argument. END CATCH;
と(:C#のここに)あなたの.NETコードで
。しかし、SELECTクエリ以外の解決策はありますか?同様に、commandobjectまたはreaderのプロパティにエラー番号が設定されているかどうかを知る必要があります。 – Ananth
ありがとうございます。 Iamはdatareaderを使って作業しています。このソリューションはData Readerで動作しますか? – Ananth
@Ananth:SQL ServerでRAISERRORが発生した場合、C#コードが例外で中断され、データリーダーが中断され、.NETの 'try/catch'ブロックの' catch'に制御が移りますアプリ。そう、はい、それはデータウェアで動作します.... –
@marc_s ..私は私が探していた答えを得ました。それはex.Numberにはエラー番号があります。ありがとうございます。しかし、raiseエラーはデータでは機能しませんでしたリーダー。 SELECTクエリの直後にRAISERRORステートメントが記述されていても、spのselectクエリがうまく動作せず、エラーが発生しませんでした – Ananth