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.