gpt4 book ai didi

.net - 存储过程中END之后的语句是否执行?

转载 作者:行者123 更新时间:2023-12-04 23:07:52 26 4
gpt4 key购买 nike

存储过程中END之后的语句是否执行?

我发现我的一个存储过程在 BEGIN/END 块之后包含一个删除过程。但是,每次我在代码中的其他地方执行存储过程时,它似乎都能正常工作,并且
pvd_sp_yyy 不会被删除。我不知道为什么?我首先担心这一点,因此无论如何我都将删除附加声明。

有没有人对此有任何想法?

谢谢

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER PROCEDURE [dbo].[pvd_xxx]
@var
AS

BEGIN

DECLARE @RETURN int

SET @RETURN = 0

IF EXISTS (
SELECT * FROM table1
WHERE name = @var
)
BEGIN
SET @RETURN = 1
END

RETURN @RETURN

END


IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pvd_sp_yyy]') AND type in (N'P', N'PC'))
DROP PROCEDURE [pvd_sp_yyy]

最佳答案

BEGIN/END 不是存储过程的限制。批处理的结束(通常是 GO)是。

所以,是的,代码被执行了。

这也意味着 BEGIN/END 是不必要的......就像参数周围的括号一样。这是 SQL:不是高级客户端语言。

我经常在存储过程中留下一个 GRANT EXECUTE ...... :)

关于.net - 存储过程中END之后的语句是否执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6789002/

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