ociNewCursor

(PHP 3>= 3.0.8, PHP 4 >= 4.0.0)

ociNewCursor --  Retourne un nouveau pointeur à utiliser pour lier les pointeurs de références

Description

int ocinewcursor (resource conn)

ocinewcursor() alloue un nouveau pointeur de commande, pour la connexion conn.

Exemple 1. Utiliser un REF CURSOR issue d'une procédure enregistrée.

<?php
// supposons que votre procédure stoquée info.output retourne un pointeur
// de curseur dans : data
$conn = ociLogon("scott","tiger");
$curs = ociNewCursor($conn);
$stmt = ociparse($conn,"begin info.output(:data); end;");
ocibindbyname($stmt,"data",&$curs,-1,oci_B_CURSOR);
ociexecute($stmt);
ociexecute($curs);
while (ociFetchInto($curs,&$data)) {
    var_dump($data);
}
ociFreeStatement($curs);
ociFreeCursor($stmt);
ociLogoff($conn);
?>

Exemple 2. Utiliser un REF CURSOR issue d'une commande SELECT

<?php
print "<HTML><BODY>";
$conn = ociLogon("scott","tiger");
$count_cursor = "CURSOR(select count(empno) num_emps from emp " .
                "where emp.deptno = dept.deptno) as EMPCNT from dept";
$stmt = ociparse($conn,"select deptno,dname,$count_cursor");
ociexecute($stmt);
print "<TABLE BORDER=\"1\">";
print "<TR>";
print "<TH>DEPT NAME</TH>";
print "<TH>DEPT #</TH>";
print "<TH># EMPLOYEES</TH>";
print "</TR>";
while (ociFetchInto($stmt,&$data,oci_ASSOC)) {
    print "<TR>";
    $dname  = $data["DNAME"];
    $deptno = $data["DEPTNO"];
    print "<TD>$dname</TD>";
    print "<TD>$deptno</TD>";
    ociexecute($data[ "EMPCNT" ]);
    while (ociFetchInto($data[ "EMPCNT" ],&$subdata,oci_ASSOC)) {
        $num_emps = $subdata["NUM_EMPS"];
        print  "<TD>$num_emps</TD>";
    }
    print "</TR>";
}
print "</TABLE>";
print "</BODY></HTML>";
ociFreeStatement($stmt);
ociLogoff($conn);
?>