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() 的别名。不过其已被废弃,不推荐使用。