2011-03-21 78 views
1

我有一個存儲過程,現在只是假設驗證您的字符串輸入爲有效日期。我試過在程序外部運行這個程序,它運行得很完美,但是隻要我把它放在程序中,參數就會變成零。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 2011-03-21 16:12:24