gpt4 book ai didi

sql - 您可以检测到INSERT-EXEC方案吗?

转载 作者:行者123 更新时间:2023-12-03 08:35:55 27 4
gpt4 key购买 nike

是否可以检测INSERT-EXEC语句是否正在调用当前存储过程?

是的,我了解我们可能不希望再使用INSERT-EXEC语句...这不是我要问的问题。

我使用INSERT-EXEC的原因是因为我希望促进存储过程的重用,而不是一直都重写相同的SQL。

这就是我关心的原因:
INSERT-EXEC情况下,一旦请求ROLLBACK,原始错误消息将丢失。这样,现在创建的所有记录都将被孤立。

示例:

ALTER PROCEDURE [dbo].[spa_DoSomething]
(
@SomeKey INT,
@CreatedBy NVARCHAR(50)
)
AS
BEGIN
SET NOCOUNT ON;

BEGIN TRY
BEGIN TRANSACTION

-- SQL runs and throws an error of some kind.

COMMIT TRAN
END TRY
BEGIN CATCH

IF @@TRANCOUNT > 0
ROLLBACK TRAN

-- If this procedure is called using an INSERT-EXEC
-- then the original error will be lost at this point because
-- "Cannot use the ROLLBACK statement within an INSERT-EXEC statement."
-- will come-up instead of the original error.

SET @ErrorMessage = ERROR_MESSAGE();
SET @ErrorSeverity = ERROR_SEVERITY();
SET @ErrorState = ERROR_STATE();

RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState)
END CATCH

RETURN @@Error
END

最佳答案

也许@@ NESTLEVEL可以帮助您:

http://msdn.microsoft.com/en-us/library/ms187371.aspx

关于sql - 您可以检测到INSERT-EXEC方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6612008/

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