为什么 SQL 解析器执行这个非法语法?

问题描述 投票:0回答:1

我有一个这种形式的存储过程:

ALTER PROCEDURE [dbo].[fooBar]
(
)
AS
BEGIN
-- etc
RETURN  @Success
END

它之前一直与其中的

BEGIN
END
完美配合,但在更改某些内容并将其恢复回来后,它拒绝执行,指向最后一个
END
处的语法错误(删除下一个指向过程中第一个 IF/BEGIN/... 语句出现语法错误,从而开始你的徒劳追逐)。

查看MSDN官方文档的语法,用这种方式封装存储过程的

BEGIN
END
是非法的。 (删除
BEGIN
END
解决了问题)

问题:为什么会发生这种情况?

编译器是否最初跳过了这个

BEGIN
END
后来发现了它? SQL 编译器是否会忽略一些事情?是遗产吗?难道只是挑剔吗?我是否缺少修补程序?

这是

SQL Server 10.50.1617

sql sql-server
1个回答
1
投票

BEGIN
/
END
对于存储过程完全有效。这是在您链接到的文档页面的语法中明确设置的。

这是不允许的括号。

© www.soinside.com 2019 - 2024. All rights reserved.