我try 用以下方法更改默认参数值:

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

SQL预编译程序给了我一个错误:

Msg 102,15级,状态1,程序my_sp,第8行"("附近的语法不正确.

我已经创建了程序.(我不确定这是否相关.)我使用了一个空的默认值,稍后再判断,但这似乎不合适.我能用一行吗?


Update: I was going off of MSDN's description of stored procedure parameters:

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

注:

当函数的参数具有默认值时,在调用函数检索默认值时,必须指定关键字default.这种行为不同于在存储过程中使用带有默认值的参数,在存储过程中,省略参数也意味着默认值.

我读错了吗?

非常感谢.

推荐答案

存储过程参数的默认值必须为constants.

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

Sql相关问答推荐

如何编写SQL查询,在2024年每月的第一个日期输出货币?

帮助修复查询以识别SQL DW中数据中的递归关系

SQL Google Sheets:UNIQUE/DISTINCT和编码查询函数

基于列对多行求和的查询

SQL(PostgreSQL)从条件创建点表

从原始表列中经过JSON字符串化的对象数组构建视图

如何更新SQLite数据库中的表?

在数据库中搜索列

对列进行排序后,基于两列删除重复行

基于多参数的SQL Server条件过滤

在Netezza SQL中将字符DataType转换为整型DataType

从类似JSON的字符串列创建新列

如何在MS Access中基于另外两个表自动填充一个表中的字段?

按二维数组的第一个元素排序

什么是 100.它与 100 有什么区别?

在presto sql中解析带有区域的时间格式

Clob 问题 - 将 clob 列拆分为多行

String_Split 多列

如何从 2 个 SQLite 表构建嵌套对象?

条件前置值