PHP Manual

例1 基本的なクエリ

<?php

  $conn 
oci_connect('hr''hr''orcl');
  if (!
$conn) {
    
$e oci_error();
    print 
htmlentities($e['message']);
    exit;
  }

  
$query 'SELECT * FROM DEPARTMENTS';

  
$stid oci_parse($conn$query);
  if (!
$stid) {
    
$e oci_error($conn);
    print 
htmlentities($e['message']);
    exit;
  }

  
$r oci_execute($stidOCI_DEFAULT);
  if (!
$r) {
    
$e oci_error($stid);
    echo 
htmlentities($e['message']);
    exit;
  }

  print 
'<table border="1">';
  while (
$row oci_fetch_array($stidOCI_RETURN_NULLS)) {
    print 
'<tr>';
       foreach (
$row as $item) {
         print 
'<td>'.($item?htmlentities($item):'&nbsp;').'</td>';
       }
       print 
'</tr>';
  }
  print 
'</table>';

  
oci_close($conn);
?>

例2 バインド変数を用いた挿入

<?php

  
// 実行前に表を作成する
  //   CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));

  
$conn oci_connect('scott''tiger''orcl');

  
$query 'INSERT INTO MYTABLE VALUES(:myid, :mydata)';

  
$stid oci_parse($conn$query);

  
$id 60;
  
$data 'Some data';

  
oci_bind_by_name($stid':myid'$id);
  
oci_bind_by_name($stid':mydata'$data);

  
$r oci_execute($stid);

  if (
$r)
    print 
"One row inserted";

  
oci_close($conn);

?>

例3 CLOB カラムにデータを挿入する

<?php

// 実行前に表を作成する
//     CREATE TABLE MYTABLE (mykey NUMBER, myclob CLOB);

$conn oci_connect('scott''tiger''orcl');

$mykey 12343;  // この例で用いる任意のキー

$sql "INSERT INTO mytable (mykey, myclob)
        VALUES (:mykey, EMPTY_CLOB())
        RETURNING myclob INTO :myclob"
;

$stid oci_parse($conn$sql);
$clob oci_new_descriptor($connOCI_D_LOB);
oci_bind_by_name($stid":mykey"$mykey5);
oci_bind_by_name($stid":myclob"$clob, -1OCI_B_CLOB);
oci_execute($stidOCI_DEFAULT);
$clob->save("A very long string");

oci_commit($conn);

// CLOB データをフェッチする

$query 'SELECT myclob FROM mytable WHERE mykey = :mykey';

$stid oci_parse ($conn$query);
oci_bind_by_name($stid":mykey"$mykey5);
oci_execute($stidOCI_DEFAULT);

print 
'<table border="1">';
while (
$row oci_fetch_array($stidOCI_ASSOC)) {
  
$result $row['MYCLOB']->load();
  print 
'<tr><td>'.$result.'</td></tr>';
}
print 
'</table>';

?>

コマンドラインで実行するのと同様な手法により、ストアドプロシージャ に簡単にアクセス可能です。

例4 ストアドプロシージャの使用法

<?php
// by webmaster at remoterealty dot com
$sth oci_parse($dbh"begin sp_newaddress( :address_id, '$firstname',
 '
$lastname', '$company', '$address1', '$address2', '$city', '$state',
 '
$postalcode', '$country', :error_code );end;");

// この命令は、:address_id を入出力変数、:error_code を出力変数として
// ストアドプロシージャ sp_newaddress をコールします。
// 続いて、以下のようにバインドを実行します。

   
oci_bind_by_name($sth":address_id"$addr_id10);
   
oci_bind_by_name($sth":error_code"$errorcode10);
   
oci_execute($sth);

?>


PHP Manual