【发布时间】:2012-05-02 20:20:38
【问题描述】:
我们在库 LMTLIB 中创建了一个 AS400 RPGLE 程序,称为 ARTEST。
它有一个数字 inout 参数,它只返回 2
$myVar = "1";
$db = Zend_Registry::get('config')->resources->multidb->as400;
$abstractAdapter = new Zend_Db_Adapter_Db2($db);
//Gives the message "Invalid bind-variable position 'myVar'"
$sql = 'CALL QSYS.QCMDEXC(\'CALL LMTLIB.ARTEST PARM(?)\', 0000000026.00000)';
//Gives the message "Token PARM was not valid. Valid tokens: ( INTO USING. SQLCODE=-104"
$sql = 'CALL LMTLIB.ARTEST PARM(?)';
//Gives the message "ARTEST in LMTLIB type *N not found. SQLCODE=-204"
$sql = 'CALL LMTLIB.ARTEST (?)';
$stmt = new Zend_Db_Statement_Db2($abstractAdapter, $sql);
$stmt->bindParam('myVar', $myVar, 4, 1);
$stmt->execute();
现在,我可以理解为什么第三条 SQL 语句会失败并显示“未找到”消息……因为它不是表/文件,而是 RPGLE 程序。
令人恼火的是,如果我删除 (?),并简单地放入 (1)... SQL 调用似乎是成功的,并且 RPGLE 程序显示它已被调用。但是,我无法看到程序的响应是什么。
提前感谢您的帮助!
【问题讨论】:
标签: php sql zend-framework call ibm-midrange