我們在庫LMTLIB中創建了一個名爲ARTEST的AS400 RPGLE程序。在PHP/Zend Framework中調用SQL中的RPGLE程序
它有一個數字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程序顯示它已被調用。但是,我無法看到程序的迴應是什麼。
在此先感謝您的幫助!
看起來就像它與Zend一起工作。只有一條建議:當我在db2/400上使用php和odbc時,我必須知道php_odbc不支持輸出參數。 – kratenko