无法通过VBscript运行DB2存储过程

时间:2014-06-22 13:29:18

标签: stored-procedures vbscript db2 call

过去三天,我在从VB Script调用DB2存储过程时遇到了麻烦。我可以调用简单但不具有更多IN / OUT参数的SP。

我使用以下代码为SP添加参数。

oADO_CMD.CommandType = 4
oADO_CMD.CommandText = "schema.sp_name"
oADO_CMD.Parameters.Refresh

Const adVarChar = 200
Const adParamInput = 1
Const adParamOutput = 2

oADO_CMD.Parameters.append oADO_CMD.CreateParameter("test", adVarChar, adParamInput, 4, "1000")
oADO_CMD.Parameters.append oADO_CMD.CreateParameter("tester", adVarChar, adParamInput, 6, "")

当我在前端运行时,我使用下面的查询,它工作正常。

call schema.sp_name('1000','')

在一个SP中一切正常但是当我对另一个SP使用相同的方法时,它只会引发我的错误。但是在前端,当我提供相同的数据时,我可以收到记录。

当我查看关于错误的SP时,它与准备游标有关。说真的,我不确定它是什么,因为我在SP中不是很好。这是关于将值从vbs传递到DB2 SP的吗?因为有些参数我需要在双引号中传递空值..或者其他导致错误的东西......?

以下是SP的一些内容。

CreateSQL.
------------,
    MOVE SPACES  TO lc_SQLStatement.

    EXEC SQL
    SET :lc_SQLStatement = TRIM(:lc_SelectClause)  || " " ||
                              TRIM(:lc_FromClause)    || " " ||
                              TRIM(:lc_WhereClause)
    END-EXEC.

    STRING lc_SelectClause    DELIMITED BY SIZE
    MOVE SPACES  TO lc_SQLStatement.

    EXEC SQL
    SET :lc_SQLStatement = TRIM(:lc_SelectClause)  || " " ||
                          TRIM(:lc_FromClause)    || " " ||
                          TRIM(:lc_WhereClause)
    END-EXEC.

STRING lc_SelectClause    DELIMITED BY SIZE
       lc_FromClause      DELIMITED BY SIZE
       lc_WhereClause     DELIMITED BY SIZE
INTO   lc_SQLStatement
END-STRING.

CreateDynamCursor.
-------------------
    EXEC SQL
      PREPARE cu_SearchCR FROM :lc_SQLStatement
    END-EXEC.

    EVALUATE SQLCODE
       WHEN 0
          CONTINUE
       WHEN OTHER
          MOVE lnc_04         TO pc_ReturnCode
          MOVE lnc_PrepCurErr TO pc_RetCodeDescription
    END-EVALUATE.

我的pc_ReturnCode和pc_RetCodeDescription值为“04”,“准备cu_SearchCR时出错”。

0 个答案:

没有答案