2015-03-25 17 views
0

我有這個存儲過程現在空字符串在存儲過程中是否被視爲空參數?

ALTER PROC myProcedure 
    @day VARCHAR (6) = NULL 
as 

,如果我這樣稱呼它

EXEC myProcedure @day= '' 

會是怎樣的@day結果呢?它會是空字符串還是NULL?

我的理論是,如果參數完全省略,它將是NULL,但現在它將是空字符串。有人可以確認嗎?

回答

1

如果您傳遞一個空字符串,則參數值爲空字符串。您可以輕鬆地通過選擇變量檢查如下圖所示

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將返回錯誤。

+0

謝謝。這就是我的想法,但由於各種原因(權限等),我無法自己檢查它。 – Zikato 2015-03-25 08:59:47

相關問題