我尝试使用以下方法更改默认参数值:
ALTER PROCEDURE [dbo].[my_sp] @currentDate datetime = GETDATE()
而所有的SQL预编译器给我的都是这个错误:
消息102,级别15,状态1,过程my_sp,第8行’(’附近的语法不正确。
我已经创建了过程。(我不确定这是否相关。)我使用的是空默认值,以后再检查它,但这似乎不合适。我可以一行完成吗?
更新:我不打算使用MSDN对存储过程参数的描述:
[= default]是参数的默认值。如果定义了默认值,则可以在不为该参数指定值的情况下执行该函数。 注意: 可以为CLR函数指定默认参数值,但varchar(max)和varbinary(max)数据类型除外。 当函数的参数具有默认值时,在调用函数以检索默认值时必须指定关键字DEFAULT。此行为与在存储过程中使用具有默认值的参数不同,在存储过程中,省略参数也意味着使用默认值。
[= default]是参数的默认值。如果定义了默认值,则可以在不为该参数指定值的情况下执行该函数。
注意: 可以为CLR函数指定默认参数值,但varchar(max)和varbinary(max)数据类型除外。
当函数的参数具有默认值时,在调用函数以检索默认值时必须指定关键字DEFAULT。此行为与在存储过程中使用具有默认值的参数不同,在存储过程中,省略参数也意味着使用默认值。
我读错了吗?
非常感谢。
存储过程参数的默认值必须为 常量 。您需要执行以下操作…
ALTER Procedure [dbo].[my_sp] @currentDate datetime = null AS IF @currentDate is null SET @currentDate = getdate()