Чтобы получить номер ошибки () из хранимой процедуры в calling.NET применение


Привет как лучше всего передать Error_Number() из хранимой процедуры В вызывающее приложение .NET?

Я знаю, что мы можем сделать это, установив выходной параметр или через запрос SELECT. Примечание: я использую считыватель данных.

Заранее благодарю.

2 2

2 ответа:

Вы можете попытаться сделать это - поймать ваш 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);
    }
}

Попробуйте это :

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;