admin

SQL函数是否作为默认参数值?

sql

我尝试使用以下方法更改默认参数值:

ALTER PROCEDURE [dbo].[my_sp]
@currentDate datetime = GETDATE()

而所有的SQL预编译器给我的都是这个错误:

消息102,级别15,状态1,过程my_sp,第8行’(’附近的语法不正确。

我已经创建了过程。(我不确定这是否相关。)我使用的是空默认值,以后再检查它,但这似乎不合适。我可以一行完成吗?


更新:我不打算使用MSDN对存储过程参数的描述

[= default]是参数的默认值。如果定义了默认值,则可以在不为该参数指定值的情况下执行该函数。

注意:
可以为CLR函数指定默认参数值,但varchar(max)和varbinary(max)数据类型除外。

当函数的参数具有默认值时,在调用函数以检索默认值时必须指定关键字DEFAULT。此行为与在存储过程中使用具有默认值的参数不同,在存储过程中,省略参数也意味着使用默认值。

我读错了吗?

非常感谢。


阅读 246

收藏
2021-05-10

共1个答案

admin

存储过程参数的默认值必须为 常量 。您需要执行以下操作…

ALTER Procedure [dbo].[my_sp]
@currentDate datetime = null
AS
IF @currentDate is null
SET @currentDate = getdate()
2021-05-10