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。這讓我瘋狂任何幫助將不勝感激!
不是你的問題的答案,但爲什麼即使添加「NULL」的參數,因爲它們的默認值已經在存儲過程中指定了?如果你不添加它們,你會避免這個問題。 –
嘗試使用'DBNull.Value'(或任何VB6等價物)而不是'NULL'。 – yelxe
更好的方法是不要像@MartinParkin已經建議的那樣設置參數。當我在存儲過程中設置了默認值時,我總是使用這種方法。 – Lankymart