Как получить сообщение об ошибке из хранимой процедуры на дисплее на C #?

У меня есть хранимая процедура в моей базе данных, которая выглядит следующим образом:

ALTER PROCEDURE [dbo].[Cambiar_TerceroPedido_copy]
    @CodEmp as varchar(2) = Ɖ',
    @TipoReg as varchar(2) = 'CF',
    @Pedido as integer,
    @NuevoCliente as varchar(10),
    @NuevoClienteEntrega as varchar(10) = null,
    @NuevoClienteFactura as varchar(10) = null,
    @NuevoClientePagoCobro as varchar(10) = null,
    @autorizador as varchar(10) = null,
    @error varchar(100) OUTPUT
AS
...

IF ((SELECT count(distinct T_FACTURAS.FACTURA)
        FROM T_FACTURAS INNER JOIN T_FACTURASL 
                ON T_FACTURAS.CODEMP = T_FACTURASL.CODEMP AND T_FACTURAS.TIPOREG = T_FACTURASL.TIPOREG AND T_FACTURAS.FACTURA = T_FACTURASL.FACTURA
        WHERE (T_FACTURAS.CODEMP = @CodEmp) 
                AND (T_FACTURAS.TIPOREG = @TipoReg) 
                AND (T_FACTURASL.NUMPED = @Pedido)
                AND (gg.dbo.getEsFechaControl(@CodEmp, 'MS', T_FACTURAS.FECHAF) = -1)
    ) > 0) BEGIN

    SET @error = 'ERROR!!!     El pedido tiene facturas asociadas. 1º debe eliminarlas' --+ cast (@CodEmp as varchar) + '/' + cast (@TipoReg as varchar) + '/' + cast (@Pedido as varchar) + '/'
    Print @error
    Return  
END

Если я выполняю этот код, я получаю сообщение об ошибке в консоли Microsoft SQL Server, но я хочу использовать эту хранимую процедуру в своем коде C #, и я хотел бы знать, как я могу получить эту ошибку в MessageBox?

Может хранить ошибку в переменной? А затем добавить параметры, как это?

   strsql = "exec [dbo].[Cambiar_TerceroPedido_copy] '" + empresaGlobal.empresaID + "','" + c1 + "','" + c2numPed + "','" + c3provClient + "','" + c3provClient + "','" + c3provClient + "','" + c3provClient + "', 'JoseM'";
   SqlCommand cmd = new SqlCommand(strsql, conexion);
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.Add("@error", SqlDbType.Char, 500);
   cmd.Parameters["@error"].Direction = ParameterDirection.Output;

Всего 1 ответ


как я могу получить эту ошибку в MessageBox

Добавьте обработчик событий для SqlConnection.InfoMessage .

Событие InfoMessage наступает, когда SQL Server возвращает сообщение с серьезностью не более 10. Сообщения с уровнем серьезности от 11 до 20 вызывают ошибку, а сообщения с уровнем серьезности более 20 приводят к закрытию соединения. Дополнительные сведения об уровнях ошибок SQL Server см. В разделе Серьезность ошибок компонента Database Engine.