我正在尝试在TSQL中创建一个以月为参数(数字格式)的SP。我希望如果该参数被用户抑制,则SP将使用当前月份。
我尝试了这个,但是它说我使用了不正确的语法:
CREATE PROCEDURE myproc
@month int = select Month(GetDate())
我在做什么错了?
谢谢!
答案 0 :(得分:1)
您不能将func调用作为默认参数值传递:
CREATE PROCEDURE myproc
@month int = select Month(GetDate())
应为:
CREATE PROCEDURE myproc
@month int = NULL
AS
BEGIN
SET @month = COALESCE(@month, Month(GetDate()));
SELECT @month;
END;
如果用户未提供@month
的值,则默认情况下为NULL
,而COALESCE
将设置适当的值。