stored procedure 變數不允許NULL

廢言在前:太久沒寫文章了導致一開始找不到該怎麼登入Blog....

情境:由於stored procedure內傳入NULL導致一連串的錯誤,所以我們決定要在stored procedure內限制傳入的變數不得為NULL

然而我Google爬文的時候看到一堆都是在教我們如何把NULL塞進去不報錯,而非塞了NULL之後強制報錯。

找了很久才找到三篇比較適合我的情境的文章:

MSDN:DECLARE @local_variable (Transact-SQL),從這邊知曉沒辦法在DECLARE上頭寫not null

sqlservercentral:在這邊看到該怎麼把null的抓出來設定

CREATE PROC spMyProc

@State CHAR(2) = 'CA',

@Country VARCHAR(32) = NULL

AS

BEGIN

-- Disallow NULL Country!

IF (@Country IS NULL)

SET @Country = 'USA'

. . .

END

GO

VITO の 學習筆記:從這邊知道該如何讓它強制丟出錯誤訊息

DECLARE @msg nvarchar(2048);
SET @msg = '錯誤....訊息';
THROW 60000, @msg, 1; 

最後把他們全部組起來:

DECLARE S_No nvarchar(11)
DECLARE @msg nvarchar(2048)
SET @msg = '參數中包含有null值'
if(@S_No is NULL)THROW 60000, @msg, 1    
.
.
.

這樣我在TRANSACTION結束的時候就能接收到參數是NULL時的錯誤訊息,也能妥善地ROLLBACK了!

其他參考:[SQL] SQL指令重點整理(三):SQL限制(SQL Constraint)之介紹

只是個路過的新手,發文有誤請告知。