我在CodeIgniter 3中开发的一个函数遇到了一些问题。我试图用引用游标调用Oracle中的存储过程(带有一些条件和连接的SELECT),但当我执行它时,我从游标中得到了一个空数组。
我把下面的PHP代码留给你:
public function getReport($nummonth,$numyear){
$sqlqry = "BEGIN FRGSV006_SCP60_COMPACT(:cur,:nummonth,:numyear); END;";
$smt = oci_parse($this->connbi, $sqlqry);
oci_bind_by_name($smt, ":nummonth", $nummonth,32);
oci_bind_by_name($smt, ":numyear", $numyear,32);
$refcur = oci_new_cursor($this->connbi);
oci_bind_by_name($smt, ":cur",$refcur,-1,OCI_B_CURSOR);
oci_execute($smt);
oci_execute($refcur);
oci_fetch_all($refcur, $result,null,null,OCI_FETCHSTATEMENT_BY_ROW);
oci_free_statement($smt);
oci_free_statement($refcur);
return $result;
}
我已经在数据库上测试了这个程序,它是可以的。我已经在谷歌上搜索了一个解决方案,没有一个工作。
您是否知道可能发生的情况/为什么不返回数据?
1条答案
按热度按时间chhqkbe11#
你的代码看起来不错。我假设
connbi
已经在成功的@oci_pconnect
调用中定义了。你还应该在每一步检查错误:同时捕获
$nrows = oci_fetch_all($refcur, $result,null,null, OCI_FETCHSTATEMENT_BY_ROW);
返回的行并发出调试输出,看看它是否返回了任何内容。您可能还需要设置一些PHP设置,如: