[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.