如何在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;
答案 0 :(得分:1)
如果我理解你的问题,你可以创建一个返回错误的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