好的我输入了谷歌而没有答案
这是我的问题
假设在存储过程中我有以下选择,那么将;
放在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;最后
我不是要求这个特例。它显然对这个例子没有影响,但在运行时它有什么不同?我的意思是它完成它然后移动下一个或什么
感谢您的回答
答案 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
with
或merge
语句要求显式终止前面的语句。
答案 1 :(得分:1)
据我了解,这意味着以'结尾的陈述;'必须在下一行开始执行之前完成/完成/终止。
答案 2 :(得分:1)
不使用分号来终止语句是不推荐使用的行为(http://msdn.microsoft.com/en-us/library/ms143729.aspx)。是否在将来的版本中实际上不允许它是无关紧要的;它已被弃用,因此不应该这样做。所有语句都应使用分号作为终止字符。此外,使用分号有助于编码可读性。