有人能告诉我在SQL Server中何时何地需要使用begin
和end
阻止?
此外,该Go
关键字到底是做什么的?
我今天遇到了一个有趣的问题.我正在改变存储过程并在最后放置一个select语句.它本来是临时的,只是用于处理数据.我很惊讶后来发现声明已经保存并且在SP运行时正在执行.
SET ANSI_NULLS ON
GO
-- Comments usually go here and are saved as part of the SP
ALTER PROCEDURE [dbo].[MySP]
@param INT
AS
BEGIN
--Your normal SQL statements here
END
--You can also add SQL statements here
select * from LargeTable
--You have access to the params
select @param
Run Code Online (Sandbox Code Playgroud)
有意义的是保存所有内容,而不仅仅是BEGIN/END内部的内容,否则评论SET ANSI_NULLS
等会消失.我对从哪里开始有点困惑,所以我有几个问题:
SET ANSI_NULLS
被保存为SP的一部分.我已经确认每个SP都有自己的价值.SQL Server如何知道将其保存为SP的一部分,因为之前没有引用它?它是否对当前环境状态进行全面扫描,然后在ALTER PROCEDURE
运行时保存状态(可能只是非默认值)?