SQL Server – 将默认DateTime值分配给存储过程中的参数

前端之家收集整理的这篇文章主要介绍了SQL Server – 将默认DateTime值分配给存储过程中的参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
也许我在这里是个白痴,但我正在尝试将默认的DateTime值分配给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'.

我可以让它为Integers工作就好了.我究竟做错了什么?

编辑:从下面的答案中,我最终在Sproc本身内部进行了以下操作:

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

    SET @MyDateTime = COALESCE(@MyDateTime,CONVERT(DATETIME,20))

    ...snip...
END

解决方法

@MyDateTime DATETIME =’1753-01-01 00:00:00′

或者在sproc内你可以这样做:

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

错误是由于调用CONVERT,在默认参数时您无法执行此操作.

猜你在找的MsSQL相关文章