我對TSQL(主要是MySQL體驗)有點新鮮。我碰到一些參數聲明,我不確定,如果有的話,區別是什麼,在一個存儲過程具有與申報時沒有「爲」關鍵字:參數在TSQL中有或沒有「AS」關鍵字
CREATE PROCEDURE [dbo].[SomeStoredProc]
@variable1 varchar(50),
@variable2 as varchar(50)
...
我對TSQL(主要是MySQL體驗)有點新鮮。我碰到一些參數聲明,我不確定,如果有的話,區別是什麼,在一個存儲過程具有與申報時沒有「爲」關鍵字:參數在TSQL中有或沒有「AS」關鍵字
CREATE PROCEDURE [dbo].[SomeStoredProc]
@variable1 varchar(50),
@variable2 as varchar(50)
...
奇怪的是the documentation不顯示AS
爲部分語法既不可選也不強制。
但是,無論如何,沒有區別。
有趣的是,關於局部變量的文檔顯示了它,但沒有提供任何解釋:https://msdn.microsoft.com/en-us/library/ms188927.aspx –
@RandyHall有趣的東西。他們可能會將'DECLARE'語法擴展到'CREATE PROCEDURE'頭文件中(這只是一個預感)。 –
OP發佈了參數聲明,而不是變量。 –
據我所知,除了預期爲AS
(但不是強制性)的別名列外,AS
是可選的,更常用於查詢中。關於功能,它們是相同的。
FROM Table1 AS t
FROM Table1 t
--They are the same.
如果你看到這樣的變量和代碼不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
您將需要遵循了該值Variable1
和Variable2
否則它會報錯了。上面的Variable3
是在存儲過程中創建的,因此不需要通過EXEC
命令來傳遞。
問題是關於使用和不使用'as'關鍵字之間的區別,而不是局部變量的一般功能。 –
這意味着當你執行你的存儲過程時,你將需要傳遞這些變量,否則會引發錯誤。 –
這些是參數,而不是變量 –
@PanagiotisKanavos你是對的。爲了清晰起見,我更新了 –