Sql server 如何在存储过程中创建带有RAISERROR的参数?
如何在MSSQL中创建带有RAISERROR的参数 此id存储过程例如: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
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