gpt4 book ai didi

SQL Server : retrieving stored procedure errors and use them

转载 作者:行者123 更新时间:2023-12-02 08:00:25 26 4
gpt4 key购买 nike

我正在尝试从不同的存储过程中获取错误。

例如,用户尝试将重复的产品 ID 添加到表中;这将失败并且会引发重复键错误。如果用户尝试插入NULL,也会失败。

如何获取这些错误并识别它们,以便我可以使用该错误来显示不同的错误消息?我知道我可以将错误放在输出参数上,但我不知道如何识别发生了哪个错误。

使用 SQL Server 2016

最佳答案

您可以使用TRY CATCH block 来处理错误。一般来说,您可以使用以下模板:

BEGIN TRY

BEGIN TRANSACTION;
-- CODE BLOCK GOES HERE
COMMIT TRANSACTION;

END TRY
BEGIN CATCH;

IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRANSACTION;
END;

-- GET ERRORS DETAILS OR THROW ERROR

END CATCH;

如果您没有使用TRANSACTION,它将如下所示:

BEGIN TRY

-- CODE BLOCK GOES HERE

END TRY
BEGIN CATCH;

-- GET ERRORS DETAILS OR THROW ERROR

END CATCH;

CATCH block 中,您可以使用一些内置函数获取错误详细信息。例如:

BEGIN TRY  
-- Generate a divide-by-zero error.
SELECT 1/0;
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;
GO

然后,根据这些详细信息,您可以执行某些操作(记录错误,不执行任何操作,将错误详细信息保存在变量中并将其传递到外部例程,使用 THROW 生成相同的错误,或再次使用 THROW - 生成一些您的自定义THROW 51000, 'My Custom error message.', 1;.

关于SQL Server : retrieving stored procedure errors and use them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54758521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com