Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在存储过程中创建带有RAISERROR的参数?_Sql Server_Stored Procedures_Out Parameters - Fatal编程技术网

Sql server 如何在存储过程中创建带有RAISERROR的参数?

Sql server 如何在存储过程中创建带有RAISERROR的参数?,sql-server,stored-procedures,out-parameters,Sql Server,Stored Procedures,Out Parameters,如何在MSSQL中创建带有RAISERROR的参数 此id存储过程例如: BEGIN TRY //OPERATION END TRY BEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_MESSAGE(), @Err

如何在MSSQL中创建带有RAISERROR的参数

此id存储过程例如:

BEGIN TRY

//OPERATION

END TRY
BEGIN CATCH
    DECLARE @ErrorMessage NVARCHAR(4000);
    DECLARE @ErrorSeverity INT;
    DECLARE @ErrorState INT;

    SELECT 
        @ErrorMessage = ERROR_MESSAGE(),
        @ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE();

    -- Use RAISERROR inside the CATCH block to return error
    -- information about the original error that caused
    -- execution to jump to the CATCH block.
    RAISERROR (@ErrorMessage, -- Message text.
               @ErrorSeverity, -- Severity.
               @ErrorState -- State.
               );
END CATCH;

如果我理解您的问题,您可以创建一个返回错误的SP,以便:

CREATE PROCEDURE [dbo].[mySp]
(
    @ErrorMessage NVARCHAR(4000) output = '';
    @ErrorSeverity INT output = 0;
    @ErrorState INT output = 0;
)
AS

BEGIN TRY
 -- OPERATION
END TRY
BEGIN CATCH

    SELECT 
        @ErrorMessage = ERROR_MESSAGE(),
        @ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE();

END CATCH;
要执行SP并检查错误,请执行以下操作:

DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;

EXEC mySp (@ErrorMessage output, @ErrorSeverity output, @ErrorState output);

if len(@ErrorMessage) > 0
BEGIN
    -- an error occur
    select @ErrorMessage, @ErrorSeverity, @ErrorState;

    -- or you can use the RAISERROR
    RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState);
END
ELSE
BEGIN
    print 'OK';   
END

如果我理解您的问题,您可以创建一个返回错误的SP,以便:

CREATE PROCEDURE [dbo].[mySp]
(
    @ErrorMessage NVARCHAR(4000) output = '';
    @ErrorSeverity INT output = 0;
    @ErrorState INT output = 0;
)
AS

BEGIN TRY
 -- OPERATION
END TRY
BEGIN CATCH

    SELECT 
        @ErrorMessage = ERROR_MESSAGE(),
        @ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE();

END CATCH;
要执行SP并检查错误,请执行以下操作:

DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;

EXEC mySp (@ErrorMessage output, @ErrorSeverity output, @ErrorState output);

if len(@ErrorMessage) > 0
BEGIN
    -- an error occur
    select @ErrorMessage, @ErrorSeverity, @ErrorState;

    -- or you can use the RAISERROR
    RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState);
END
ELSE
BEGIN
    print 'OK';   
END