是吗表示SQL Server存储过程中的任何内容

时间:2014-08-25 15:53:51

标签: sql sql-server tsql stored-procedures

好的我输入了谷歌而没有答案

这是我的问题

假设在存储过程中我有以下选择,那么将;放在select语句的末尾会不会有什么不同?

我的意思是如果我不在声明结尾处放置;会发生什么?如果我把事情发生了?

begin

declare @param_1 int;
declare @param_2 int;

select @param_1 = col1 from mytable
select @param_2 = col2 from mytable

end

案例1以上否;最后

begin

declare @param_1 int;
declare @param_2 int;

select @param_1 = col1 from mytable;
select @param_2 = col2 from mytable;

end

上述案例2;最后

我不是要求这个特例。它显然对这个例子没有影响,但在运行时它有什么不同?我的意思是它完成它然后移动下一个或什么

感谢您的回答

3 个答案:

答案 0 :(得分:4)

;终止一个陈述。在大多数情况下,它是可选的。无论是隐式地(没有分号)还是显式地(使用分号)终止语句都没有区别。 MSDN says:

  

Transact-SQL语句终止符。虽然分号不是   这个版本的SQL Server中的大多数语句都需要它   未来版本中需要。

以下是;当前不可选的示例。这将失败:

select 6
with t1 as (select 7 as col1) select * from t1

虽然这样可行:

select 6
; with t1 as (select 7 as col1) select * from t1

withmerge语句要求显式终止前面的语句。

答案 1 :(得分:1)

据我了解,这意味着以'结尾的陈述;'必须在下一行开始执行之前完成/完成/终止。

答案 2 :(得分:1)

不使用分号来终止语句是不推荐使用的行为(http://msdn.microsoft.com/en-us/library/ms143729.aspx)。是否在将来的版本中实际上不允许它是无关紧要的;它已被弃用,因此不应该这样做。所有语句都应使用分号作为终止字符。此外,使用分号有助于编码可读性。