在 T-SQL 中使用 GetDate() 作为 SP 的默认参数不起作用

Use GetDate() as default parameter for SP in T-SQL not working

我正在尝试在 TSQL 中创建一个 SP,它将月份作为参数(数字格式)。我希望如果参数被用户抑制,那么 SP 将使用当前月份。

我试过了,但它说我使用的语法不正确:

CREATE PROCEDURE myproc
    @month int = select Month(GetDate())

我做错了什么?

谢谢!

您不能将 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;

db<>fiddle demo

如果用户没有为 @month 提供值,则默认为 NULLCOALESCE 将设置适当的值。