2016-08-23 51 views
1

我在SQL Server 2008中有一個存儲過程,當我在SSMS中運行時,它完美地返回我的數據。當我從VB腳本代碼調用存儲過程時,它不會返回數據。代碼不返回與SQL相同的數據

存儲過程的代碼:

ALTER Procedure [dbo].[getstuff] 
    (@CompID int = NULL, 
    @FranID int = NULL, 
    @Type nvarchar (50) = NULL) 
    SELECT * 
    FROM Table1 
    WHERE CompID = @CompID 
     AND (FranID = @FranID OR @FranID IS NULL) 
     AND (PType = @Type OR @Type IS NULL) 

我手動運行存儲過程在SSMS喜歡 -

DECLARE @return_value int 
EXEC @return_value = [dbo].[getstuff] 
    @CompID = 1, 
    @FranID = 22, 
    @Type = NULL 

我得到我期待

確切的數據。當我在VBScript運行像所以 -

strSql = "getstuff" 
    DBConn.AddParameter "@CompID", 1 
    DBConn.AddParameter "@FranID", 22 
    DBConn.AddParameter "@Type", NULL  

    Set TestRS = DBConn.GetRecordset(adCmdStoredProc, strSQL) 

我沒有收到數據。但如果我沒有@Type參數運行 -

strSql = "getstuff" 
    DBConn.AddParameter "@CompID", 1 
    DBConn.AddParameter "@FranID", 22 

    Set TestRS = DBConn.GetRecordset(adCmdStoredProc, strSQL) 

我得到數據。我需要能夠將NULL或實際數據傳遞給@FranID和@Type。這讓我瘋狂任何幫助將不勝感激!

+1

不是你的問題的答案,但爲什麼即使添加「NULL」的參數,因爲它們的默認值已經在存儲過程中指定了?如果你不添加它們,你會避免這個問題。 –

+1

嘗試使用'DBNull.Value'(或任何VB6等價物)而不是'NULL'。 – yelxe

+1

更好的方法是不要像@MartinParkin已經建議的那樣設置參數。當我在存儲過程中設置了默認值時,我總是使用這種方法。 – Lankymart

回答

1

我應該不要按照建議設置參數。

相關問題