在 'AS' 之前或之后声明变量有什么区别?
What's the difference between declaring the variable before or after 'AS'?
我发现我朋友的查询是这样的。
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetEmployeeTakeHomePay]
@erCode VARCHAR(50) ,
@payCycCode VARCHAR(50) ,
@pyYear SMALLINT ,
@pyMonth TINYINT ,
@pyPrd SMALLINT ,
@seq INT
AS
DECLARE @prdStartDate DATETIME
BEGIN
SELECT TOP 0
*
INTO #molohok
FROM dbo.PYTRX_TakeHomePayWorkfile
WHERE ErCode = @erCode
AND PayCycCode = @payCycCode
AND PYYear = @pyYear
AND PYMonth = @pyMonth
AND PYPrd = @pyPrd
AND Seq = @seq
'AS'前后也有变数。在'AS'之前和之后声明变量有什么区别?
参数在AS之前,变量在AS之后的声明体中
ALTER PROCEDURE [dbo].[GetEmployeeTakeHomePay]
<procedure parameters>
AS
<local variables>
as
之前的“变量”是存储过程的参数。
参数是调用存储过程时提供的“变量”。所以这个存储过程需要六个参数。参数可以是可选的。
as
后面的“变量”声明为局部变量,供存储过程运行时使用。实际上,declare
可以用在任何编程块中。
请注意,一个存储过程可以接受多个语句。但是,我 总是 将存储过程的主体放在它自己的 begin
/end
块中。我还在过程的参数周围加上了括号。
所以,我会这样写:
ALTER PROCEDURE [dbo].GetEmployeeTakeHomePay (
@erCode VARCHAR(50) ,
@payCycCode VARCHAR(50) ,
@pyYear SMALLINT ,
@pyMonth TINYINT ,
@pyPrd SMALLINT ,
@seq INT
) AS
BEGIN
DECLARE @prdStartDate DATETIME;
. . .
END; -- GetEmployeeTakeHomePay
我发现我朋友的查询是这样的。
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetEmployeeTakeHomePay]
@erCode VARCHAR(50) ,
@payCycCode VARCHAR(50) ,
@pyYear SMALLINT ,
@pyMonth TINYINT ,
@pyPrd SMALLINT ,
@seq INT
AS
DECLARE @prdStartDate DATETIME
BEGIN
SELECT TOP 0
*
INTO #molohok
FROM dbo.PYTRX_TakeHomePayWorkfile
WHERE ErCode = @erCode
AND PayCycCode = @payCycCode
AND PYYear = @pyYear
AND PYMonth = @pyMonth
AND PYPrd = @pyPrd
AND Seq = @seq
'AS'前后也有变数。在'AS'之前和之后声明变量有什么区别?
参数在AS之前,变量在AS之后的声明体中
ALTER PROCEDURE [dbo].[GetEmployeeTakeHomePay]
<procedure parameters>
AS
<local variables>
as
之前的“变量”是存储过程的参数。
参数是调用存储过程时提供的“变量”。所以这个存储过程需要六个参数。参数可以是可选的。
as
后面的“变量”声明为局部变量,供存储过程运行时使用。实际上,declare
可以用在任何编程块中。
请注意,一个存储过程可以接受多个语句。但是,我 总是 将存储过程的主体放在它自己的 begin
/end
块中。我还在过程的参数周围加上了括号。
所以,我会这样写:
ALTER PROCEDURE [dbo].GetEmployeeTakeHomePay (
@erCode VARCHAR(50) ,
@payCycCode VARCHAR(50) ,
@pyYear SMALLINT ,
@pyMonth TINYINT ,
@pyPrd SMALLINT ,
@seq INT
) AS
BEGIN
DECLARE @prdStartDate DATETIME;
. . .
END; -- GetEmployeeTakeHomePay