我有一个存储过程,现在只是假设您将字符串输入验证为有效日期。我已经尝试在程序之外运行它并且它完美无缺,但是只要我将它粘在一个过程中,参数就会变为零。
我的程序如下:
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 spDateRange @DateMin='01/11/2011', @DateMax='01/12/2011';
我的输出是:
0
0
0
Parameters not date format
答案 0 :(得分:8)
您需要为varchar
参数指定明确的长度。默认为1个字符。
char(10)
对于dd/mm/yyyy
格式的有效日期应该足够了,但我想您可能需要更长时间,因为这可能会验证可能无效的日期!
CREATE PROCEDURE spDateRange
@DateMin varchar(30) = NULL,
@DateMax varchar(30) = NULL
AS