Чтобы получить Error_Number () из хранимой процедуры в вызывающее приложение .NET - PullRequest
2 голосов
/ 12 февраля 2012

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

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

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

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 12 февраля 2012

Вы можете попытаться сделать это - перехватить ваш 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);
    }
}
0 голосов
/ 12 февраля 2012

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

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...