Параметры хранимой процедуры SQL повреждены? - PullRequest
1 голос
/ 21 марта 2011

У меня есть хранимая процедура, которая на данный момент просто должна подтвердить правильность введенной вами строки. Я попытался запустить это вне процедуры, и она работает безупречно, но как только я вставляю это в процедуру, параметры меняются на ноль.

Моя процедура выглядит следующим образом:

CREATE PROCEDURE spDateRange
@DateMin varchar = NULL,
@DateMax varchar = NULL
AS
PRINT @DateMin;
PRINT @DateMax;
IF @DateMin IS NOT NULL AND @DateMax IS NOT NULL
    BEGIN
    PRINT @DateMin;
    IF(ISDATE(@DateMin)=1 AND ISDATE(@DateMax)=1)
        PRINT 'Valid Date';
    ELSE
        RAISERROR('Parameters not date format', 10, 1);
    END
ELSE
    RAISERROR ('Invalid parameters', 10, 1);

А мой оператор execute:

EXECUTE spDateRange @DateMin='01/11/2011', @DateMax='01/12/2011';

И мой вывод:

0
0
0
Parameters not date format

1 Ответ

8 голосов
/ 21 марта 2011

Необходимо указать явную длину для параметров varchar. По умолчанию это 1 символ.

char(10) должно быть достаточно для действительных дат в формате dd/mm/yyyy, но я думаю, что вам может потребоваться больше времени, поскольку это проверяет потенциально недействительные даты!

CREATE PROCEDURE spDateRange
@DateMin varchar(30) = NULL,
@DateMax varchar(30) = NULL
AS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...