2011-03-21 3 views
1

지금은 유효한 날짜로 문자열 입력의 유효성을 검사한다고 가정하는 저장 프로 시저가 있습니다. 나는 이것을 프로 시저 외부에서 실행하려고 시도했지만 완벽하게 작동하지만 프로 시저에 고정하자마자 매개 변수가 0으로 변경됩니다.SQL 저장 프로 시저 매개 변수가 손상 되었습니까?

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 

답변

8

은 당신이 명시 적으로 길이를 줄 필요가 다음과 같이

내 절차는 varchar 매개 변수 기본값은 1 자입니다.

char(10)으로 유효한 날짜는 dd/mm/yyyy 형식으로 충분해야하지만 잠재적으로 유효하지 않은 날짜의 유효성을 검사하는 데 오래 걸릴 수도 있습니다.

CREATE PROCEDURE spDateRange 
@DateMin varchar(30) = NULL, 
@DateMax varchar(30) = NULL 
AS 
+0

오 와우. 그런 작은 실수는 내가 알아 차렸을 것입니다. 엄청 고마워 – Spidy