0
我有這個存儲過程現在空字符串在存儲過程中是否被視爲空參數?
ALTER PROC myProcedure
@day VARCHAR (6) = NULL
as
,如果我這樣稱呼它
EXEC myProcedure @day= ''
會是怎樣的@day
結果呢?它會是空字符串還是NULL?
我的理論是,如果參數完全省略,它將是NULL,但現在它將是空字符串。有人可以確認嗎?
我有這個存儲過程現在空字符串在存儲過程中是否被視爲空參數?
ALTER PROC myProcedure
@day VARCHAR (6) = NULL
as
,如果我這樣稱呼它
EXEC myProcedure @day= ''
會是怎樣的@day
結果呢?它會是空字符串還是NULL?
我的理論是,如果參數完全省略,它將是NULL,但現在它將是空字符串。有人可以確認嗎?
如果您傳遞一個空字符串,則參數值爲空字符串。您可以輕鬆地通過選擇變量檢查如下圖所示
IF OBJECT_ID('myProcedure') IS NOT NULL
DROP PROC myProcedure
GO
CREATE PROC myProcedure
@day VARCHAR (6) = NULL
as
BEGIN
SELECT @day as param
END
GO
--Returns empty string in output
EXEC myProcedure @day= ''
--Returns NULL as output
EXEC myProcedure
注:返回NULL的原因是因爲該參數默認爲NULL的過程參數的定義。如果省略默認值,則EXEC myProcedure將返回錯誤。
謝謝。這就是我的想法,但由於各種原因(權限等),我無法自己檢查它。 – Zikato 2015-03-25 08:59:47