在SQL Server 2012中声明局部变量

时间:2014-04-06 05:09:55

标签: sql-server

我对SQL Server中的局部变量有疑问。当我声明局部变量时,我从DECLARE语句开始,然后创建我的变量。我可以开始输入其他语句吗?在做其他事情之前,我是否需要BEGIN声明之类的东西?

例如,这个编码样本可以接受:

DECLARE
   @stock INT,
   @customername

select @stock = ...
select @customername ...

我可以跟任何其他声明一起使用吗?我是否必须将声明部分与其余编码分开?

3 个答案:

答案 0 :(得分:1)

您无需将其分开。
但你写的声明错误应该是:

DECLARE @stock INT; 
DECLARE @customername NVARCHAR(11);

必须输入所有变量
不同之处在于,如果你选择了多于一行的语句,那么:
set @var = (select value from table)会引发错误 select @var = value from table将从选定的最后一行分配给@var值。

答案 1 :(得分:0)

是的,你可以。

BEGIN用于特殊操作的代码块的一部分。 BEGIN可用于创建事务查询。例如:

BEGIN TRAN
Update MyTable SET X = 1 WHERE Y='4'
ROLLBACK TRAN -- Didn't like what I did, undo it

在您对事务进行ROLLBACK或COMMIT之前,您在块中查询的所有表都处于不确定状态。在您发布代码之前,您的服务器不会做太多事情。

答案 2 :(得分:0)

不,这只是你编码风格的问题。您可以自由地将DECLARE与其他代码混合使用。请务必在使用之前声明变量,而不是在同一批次中声明它两次。 未初始化的变量通常为NULL。 可以在单个语句中声明和初始化变量:

DECLARE @stock INT = 123;
顺便说一句,SELECT @stock = ...和SET @stock = ...

之间存在差异