Php/docs/function.oci-new-cursor
oci_new_cursor
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_new_cursor — 分配并返回一个新的游标(语句句柄)
说明
oci_new_cursor
( resource $connection
) : resource
oci_new_cursor() 在指定的连接上分配一个新的语句句柄。
Example #1 在 Oracle 的存储过程中使用 REF CURSOR
<?php// suppose your stored procedure info.output returns a ref cursor in :data$conn = oci_connect("scott", "tiger");$curs = oci_new_cursor($conn);$stmt = oci_parse($conn, "begin info.output(:data); end;");oci_bind_by_name($stmt, "data", $curs, -1, OCI_B_CURSOR);oci_execute($stmt);oci_execute($curs);while ($data = oci_fetch_row($curs)) { var_dump($data);}oci_free_statement($stmt);oci_free_statement($curs);oci_close($conn);?>
Example #2 在 Oracle 的 select 语句中使用 REF CURSOR
<?phpecho "<html><body>";$conn = oci_connect("scott", "tiger");$count_cursor = "CURSOR(select count(empno) num_emps from emp " . "where emp.deptno = dept.deptno) as EMPCNT from dept";$stmt = oci_parse($conn, "select deptno,dname,$count_cursor");oci_execute($stmt);echo "<table border=\"1\">";echo "<tr>";echo "<th>DEPT NAME</th>";echo "<th>DEPT #</th>";echo "<th># EMPLOYEES</th>";echo "</tr>";while ($data = oci_fetch_assoc($stmt)) { echo "<tr>"; $dname = $data["DNAME"]; $deptno = $data["DEPTNO"]; echo "<td>$dname</td>"; echo "<td>$deptno</td>"; oci_execute($data["EMPCNT"]); while ($subdata = oci_fetch_assoc($data["EMPCNT"])) { $num_emps = $subdata["NUM_EMPS"]; echo "<td>$num_emps</td>"; } echo "</tr>";}echo "</table>";echo "</body></html>";oci_free_statement($stmt);oci_close($conn);?>
oci_new_cursor() 如果出错返回 false
。
Note:
在 PHP 5.0.0 之前的版本必须使用 ocinewcursor() 替代本函数。该函数名仍然可用,为向下兼容作为 oci_new_cursor() 的别名。不过其已被废弃,不推荐使用。