代码不返回与SQL相同的数据

时间:2016-08-23 21:54:21

标签: sql-server sql-server-2008 stored-procedures vbscript

我在SQL Server 2008中有一个存储过程,当我在SSMS中运行时,它会完美地返回我的数据。当我从VB脚本代码调用存储过程时,它不会返回数据。

存储过程代码:

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 个答案:

答案 0 :(得分:1)

我不应该按照建议设置参数。