OCINewCursor

OCINewCursor -- return a new cursor (Statement-Handle) - use this to bind ref-cursors!

Description

int OCINewCursor(int conn);

OCINewCursor() allocates a new statement handle on the specified connection.

Example 1. Using a REF CURSOR from a stored procedure

  1 
  2 <?php   
  3 // suppose your stored procedure info.output returns a ref cursor in :data
  4 
  5 $conn = OCILogon("scott","tiger");
  6 $curs = OCINewCursor($conn);
  7 $stmt = OCIParse($conn,"begin info.output(:data); end;");
  8 
  9 ocibindbyname($stmt,"data",&$curs,-1,OCI_B_CURSOR);
 10 ociexecute($stmt);
 11 ociexecute($curs);
 12 
 13 while (OCIFetchInto($curs,&$data)) {
 14     var_dump($data);
 15 }
 16  
 17 OCIFreeCursor($stmt);
 18 OCIFreeStatement($curs);
 19 OCILogoff($conn);
 20 ?>

Example 2. Using a REF CURSOR in a select statement

  1 
  2 <?php   
  3 print "<HTML><BODY>";
  4 $conn = OCILogon("scott","tiger");
  5 $count_cursor = "CURSOR(select count(empno) num_emps from emp " .
  6                 "where emp.deptno = dept.deptno) as EMPCNT from dept";
  7 $stmt = OCIParse($conn,"select deptno,dname,$count_cursor");
  8 
  9 ociexecute($stmt);
 10 print "<TABLE BORDER=\"1\">";
 11 print "<TR>";
 12 print "<TH>DEPT NAME</TH>";
 13 print "<TH>DEPT #</TH>";
 14 print "<TH># EMPLOYEES</TH>";
 15 print "</TR>";
 16 
 17 while (OCIFetchInto($stmt,&$data,OCI_ASSOC)) {
 18     print "<TR>";
 19     $dname  = $data["DNAME"];
 20     $deptno = $data["DEPTNO"];
 21     print "<TD>$dname</TD>";
 22     print "<TD>$deptno</TD>";
 23     ociexecute($data[ "EMPCNT" ]);
 24     while (OCIFetchInto($data[ "EMPCNT" ],&$subdata,OCI_ASSOC)) {
 25         $num_emps = $subdata["NUM_EMPS"];
 26         print  "<TD>$num_emps</TD>";
 27     }
 28     print "</TR>";
 29 }
 30 print "</TABLE>";
 31 print "</BODY></HTML>";
 32 OCIFreeStatement($stmt);
 33 OCILogoff($conn);
 34 ?>