無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

oci_set_prefetch

(PHP 5, PECL OCI8 >= 1.1.0)

oci_set_prefetch?????

bool oci_set_prefetch ( resource $statement , int $rows )

oci_execute() ??????????? Oracle Client ???????? ???????????? oci8.default_prefetch ????????

???Oracle ??????? ???????? ??? CPU ???? ??? OCI8 ??? ????? OCI8 ?????? ?oci_fetch_row() ????? ?????????? ????????????????

oci_set_prefetch() oci_execute() ???

??????? ??????????? ??????? ??????????? (???????????) PHP ??????? ???????????

?????Oracle 8i ? REF CURSOR ???? Oracle 11gR2 ? PHP Oracle 11gR2 ?????????? ?????? Oracle 11gR2 ? ?? Oracle ???????? 11gR2 ??????

???LONG ? LOB ????? ??????????? ???????

Oracle Database 12c ??PHP ???? Oracle ?? oraaccess.xml ???? ???Oracle ????

??

statement

oci_parse() ? oci_execute() ???? OCI8 ?? ID ? REF CURSOR ?? ID

rows

???>= 0

?

? TRUE ?? FALSE ??

?

5.3.2 (PECL OCI8 1.4) ??rows 1 ??????
5.3.0 (PECL OCI8 1.3.4) ???? rows ? 1024 * rows ???? ????

1 ???????

<?php

$conn 
oci_connect('hr''welcome''localhost/XE');

$stid oci_parse($conn'SELECT * FROM myverybigtable');
oci_set_prefetch($stid300);  // oci_execute() ??
oci_execute($stid);

echo 
"<table border='1'>\n";
while (
$row oci_fetch_array($stidOCI_ASSOC+OCI_RETURN_NULLS)) {
    echo 
"<tr>\n";
    foreach (
$row as $item) {
        echo 
"    <td>".($item !== null htmlentities($itemENT_QUOTES) : "&nbsp;")."</td>\n";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";

oci_free_statement($stid);
oci_close($conn);

?>

2 REF CURSOR ??????

<?php
/*
  ? PL/SQL ?????

  CREATE OR REPLACE PROCEDURE myproc(p1 OUT SYS_REFCURSOR) AS
  BEGIN
    OPEN p1 FOR SELECT * FROM all_objects WHERE ROWNUM < 5000;
  END;
*/

$conn oci_connect('hr''welcome''localhost/XE');

$stid oci_parse($conn'BEGIN myproc(:rc); END;');
$refcur oci_new_cursor($conn);
oci_bind_by_name($stid':rc'$refcur, -1OCI_B_CURSOR);
oci_execute($stid);

// ??????
// REF CURSOR ????PHP  Oracle 11R2 ??????????
oci_set_prefetch($refcur200);
oci_execute($refcur);

echo 
"<table border='1'>\n";
while (
$row oci_fetch_array($refcurOCI_ASSOC+OCI_RETURN_NULLS)) {
    echo 
"<tr>\n";
    foreach (
$row as $item) {
        echo 
"    <td>".($item !== null htmlentities($itemENT_QUOTES) : "&nbsp;")."</td>\n";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";

oci_free_statement($refcur);
oci_free_statement($stid);
oci_close($conn);

?>

PHP OCI8 REF CURSOR ??? PL/SQL ?????REF CURSOR ??? 0 ????? "" ??? ??? OCI8 ??????????? ??0 ??????????

3 REF CURSOR Oracle ????

<?php

$conn 
oci_connect('hr''welcome''localhost/orcl');

// REF CURSOR ?
$stid oci_parse($conn'BEGIN myproc(:rc_out); END;');
$refcur oci_new_cursor($conn);
oci_bind_by_name($stid':rc_out'$refcur, -1OCI_B_CURSOR);
oci_execute($stid);

// ?????????????
// ???? myproc_use_rc() ???
// ?? 0 ??? PHP 5.3.2  PECL OCI8 1.4 ?
oci_set_prefetch($refcur0);
oci_execute($refcur);
$row oci_fetch_array($refcur);
var_dump($row);
$row oci_fetch_array($refcur);
var_dump($row);

// REF CURSOR  myproc_use_rc() ??
// ???????
$stid oci_parse($conn'begin myproc_use_rc(:rc_in); end;'); 
oci_bind_by_name($stid':rc_in'$refcur, -1OCI_B_CURSOR);
oci_execute($stid);

?>



powered by SEO.CUG.NET