【发布时间】:2017-05-21 06:05:16
【问题描述】:
我正在尝试执行并从我的程序中获取数据:
这是我的程序的定义方式:
create or replace PROCEDURE SP_GET_MY_DATA(
IN_POP VARCHAR2,
IN_SEG VARCHAR2,
IN_DUR VARCHAR2,
IN_VIEW INTEGER,
IN_PAGE INTEGER,
VIEW_DATA_CUR OUT SYS_REFCURSOR) AS ...
这是我的 PHP 代码,用于执行并从过程中获取数据:
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = JXYX.com)(PORT = 1521)))(CONNECT_DATA=(SID=DHSJKS)))";
$conn = ocilogon("XXXXXX","XXXXXXXX",$db);
$sql = 'BEGIN SP_GET_MY_DATA(:POP, :SEG, :DUR, :VIEW, :PAGE, :OUTPUT_CUR); END;';
$stmt = oci_parse($conn,$sql);
oci_bind_by_name($stmt,':POP',$pop);
oci_bind_by_name($stmt,':SEG',$seg);
oci_bind_by_name($stmt,':DUR',$dur);
oci_bind_by_name($stmt,':VIEW',$view);
oci_bind_by_name($stmt,':PAGE',$page);
$OUTPUT_CUR = oci_new_cursor($conn);
oci_bind_by_name($stmt,":OUTPUT_CUR", $OUTPUT_CUR, -1, OCI_B_CURSOR);
oci_execute($stmt, OCI_DEFAULT);
while ($data = oci_fetch_assoc($OUTPUT_CUR)) {
print_r($data);
}
但是这样做我得到了这个错误:
oci_fetch_assoc(): ORA-24374: define not done before fetch or execute and fetch”。
我无法弄清楚我错过了什么。你能帮忙吗?
【问题讨论】:
-
执行
$stmt后,还必须执行$OUTOUT_CUR