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'.

Я могу заставить его работать для целых чисел просто отлично. Что я делаю не так?


Edit: из ответов ниже, я в конечном итоге пошел со следующим внутри самого Sproc:

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

2 ответов


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

или прямо в sproc вы можете сделать это:

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

ошибка связана с вызовом CONVERT, который вы не можете сделать при дефолте параметров.


вы не можете вызвать функцию CONVERT (), просто назначьте значение по умолчанию, используя соответствующую строку datetime.