Вы можете попытаться сделать это - перехватить ваш Error_number()
в блоке SQL try/catch
, а затем вызвать ошибку, которую вы можете поймать в своем приложении .NET как SqlException
.
В вашей хранимой процедуре SQL:
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;
и в вашем .NET-коде (здесь: C #):
// 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);
}
}