我有这个存储过程
ALTER PROC myProcedure
@day VARCHAR (6) = NULL
as
现在,如果我这样称呼它
EXEC myProcedure @day= ''
@day
的结果是什么?它会是空字符串还是NULL?
我的理论是,如果参数被完全省略,它将为NULL,但现在它将是空字符串。任何人都可以确认吗?
答案 0 :(得分:1)
如果传递空字符串,则param值为空字符串。您可以通过选择变量轻松检查,如下所示
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将返回错误。