2016-11-21 54 views
5

我對TSQL(主要是MySQL體驗)有點新鮮。我碰到一些參數聲明,我不確定,如果有的話,區別是什麼,在一個存儲過程具有與申報時沒有「爲」關鍵字:參數在TSQL中有或沒有「AS」關鍵字

CREATE PROCEDURE [dbo].[SomeStoredProc] 
    @variable1 varchar(50), 
    @variable2 as varchar(50) 
... 
+0

這意味着當你執行你的存儲過程時,你將需要傳遞這些變量,否則會引發錯誤。 –

+1

這些是參數,而不是變量 –

+0

@PanagiotisKanavos你是對的。爲了清晰起見,我更新了 –

回答

2

奇怪的是the documentation不顯示AS爲部分語法既不可選也不強制。

但是,無論如何,沒有區別。

+1

有趣的是,關於局部變量的文檔顯示了它,但沒有提供任何解釋:https://msdn.microsoft.com/en-us/library/ms188927.aspx –

+0

@RandyHall有趣的東西。他們可能會將'DECLARE'語法擴展到'CREATE PROCEDURE'頭文件中(這只是一個預感)。 –

+0

OP發佈了參數聲明,而不是變量。 –

1

據我所知,除了預期爲AS(但不是強制性)的別名列外,AS是可選的,更常用於查詢中。關於功能,它們是相同的。

FROM Table1 AS t 
FROM Table1 t 
--They are the same. 
0

如果你看到這樣的變量和代碼不DECLARE他們來說,這意味着這些必須通過當您執行查詢通過;

CREATE PROCEDURE [dbo].[SomeStoredProc] 
@variable1 varchar(50), 
@variable2 as varchar(50) 

AS 


DECLARE @Variable3 varchar(50) 
/* PUT YOUR STORED PROC CODE HERE */ 

當您運行EXEC SomeStoredProc您將需要遵循了該值Variable1Variable2否則它會報錯了。上面的Variable3是在存儲過程中創建的,因此不需要通過EXEC命令來傳遞。

+0

問題是關於使用和不使用'as'關鍵字之間的區別,而不是局部變量的一般功能。 –