OCINewCursor

OCINewCursor -- 新規カーソル(命令ハンドル)を返す - 参照カーソルをバインドするために使用する!

説明

int OCINewCursor(int conn);

OCINewCursor は、新規の命令ハンドル を指定した接続に確保します。

例 1. ストアドプロシージャからの参照カーソルの使用例


 <?php   
 // ストアドプロシージャ info.output が :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);
 }
  
 OCIFreeCursor($stmt);
 OCIFreeStatement($curs);
 OCILogoff($conn);
 ?>

例 2. 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);
?>