SQL Server - 将默认日期时间值分配给存储过程中的参数

标签 sql sql-server tsql stored-procedures

也许我在这里是个白痴,但我试图将默认的日期时间值分配给 MS SQL Server 2005 中的存储过程,但无法让它工作,例如:

CREATE PROCEDURE MyProcedure
(
    @MyInteger    INT = 123,
    @MyDateTime   DATETIME = CONVERT(DATETIME, '1753-01-01 00:00:00', 20)
)
AS
BEGIN ... (snip)

因此,如果未指定 @MyDateTime 输入参数,则默认情况下应使用“1753-01-01 00:00:00”,但我收到错误...

Incorrect syntax near the keyword 'CONVERT'.

我可以让它很好地适用于整数。我做错了什么?

<小时/>

编辑:根据下面的答案,我最终在存储过程本身中使用了以下内容:

CREATE PROCEDURE MyProcedure
(
    @MyInteger    INT = 123,
    @MyDateTime   DATETIME = NULL
)
AS
BEGIN
    SET NOCOUNT ON

    SET @MyDateTime = COALESCE(@MyDateTime, CONVERT(DATETIME, '1753-01-01 00:00:00', 20))

    ...snip...
END

最佳答案

@MyDateTime DATETIME ='1753-01-01 00:00:00'

或者在存储过程中您可以执行以下操作:

SELECT @MyDateTime = (SELECT CONVERT(DATETIME, '1753-01-01 00:00:00', 20))

该错误是由于调用 CONVERT 造成的,默认参数时无法执行此操作。

关于SQL Server - 将默认日期时间值分配给存储过程中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6413277/

相关文章:

sql-server - 如何使用 TSQL 确定授予哪些角色对特定存储过程的执行权限?

mysql - 提高 Solr 和 MySQL 对的性能(使用 JPA 通过 "WHERE IN"连接)

mysql查询多次返回同一行

sql - 包含条件的 sql 中的内连接

sql - 在单个查询中查找已读和未读消息的计数

sql-server - t-sql 查找最小值

用于 XML 的 SQL Server

sql - TSQl:选择当前日期 - 6 天并将时间设置为 12:01 AM

sql-server - SQL Server 批量插入是事务性的吗?

sql - COUNT() 函数与 NOT IN 子句结合使用 varchar 字段无法正常工作 (T-SQL)