Spi*_*idy 1 stored-procedures sql-server-2008
我有一个存储过程,现在只是假设您将字符串输入验证为有效日期.我已经尝试在程序之外运行它并且它完美地运行,但是只要我将它粘在一个过程中,参数就会变为零.
我的程序如下:
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);
Run Code Online (Sandbox Code Playgroud)
而我的执行声明是:
EXECUTE spDateRange @DateMin='01/11/2011', @DateMax='01/12/2011';
Run Code Online (Sandbox Code Playgroud)
我的输出是:
0
0
0
Parameters not date format
Run Code Online (Sandbox Code Playgroud)
您需要为varchar参数指定明确的长度.默认为1个字符.
char(10)应该足够dd/mm/yyyy格式化有效日期,但我想你可能需要更长时间,因为这可能会验证可能无效的日期!
CREATE PROCEDURE spDateRange
@DateMin varchar(30) = NULL,
@DateMax varchar(30) = NULL
AS
Run Code Online (Sandbox Code Playgroud)