  | 
 LXXXVIII. Oracle 8 函数库
     这些函数允许你访问 Oracle8 和 Oracle7
     数据库。这些函数使用 Oracle8 Call-Interface (OCI8)。
     
     该扩展比 Oracle 标准函数扩展更灵活。支持向
     Oracle 位置标志符绑定局部和全局 PHP 变量,全面支持 LOB、FILE
     和 ROWID,允许用户使用用户自定义的变量。
     
    使用这个扩展需要 Oracle8 客户端库。Windows
    用户需要至少 Oracle  8.1 来使用
    php_oci8.dll。
    
    在使用这个扩展之前,请确认你已经为 Oracle 用户和 web daemon
    用户正确设置了 Oracle 环境变量。下面列出了需要设置的环境变量:
     
       ORACLE_HOME
       
       ORACLE_SID
       
       LD_PRELOAD
       
       LD_LIBRARY_PATH
       
       NLS_LANG
       
       ORA_NLS33
        
   
    在为 web 服务器用户设置环境变量之后,你还需要将 web
    服务器用户(nobody、 www)加到 oracle 组中。
    如果你的 web 服务器不能够启动或者在启动的时候崩溃: 
     检查 Apache 是否使用了 pthread 库: 
     
      
    
     如果 libpthread 没有列出,你必需重新安装 Apache:
     
      
    
     请注意在象 UnixWare 在内的某些操作系统中,使用libthread
     代替 libpthread。则PHP 和 Apache 必须使用 EXTRA_LIBS=-lthread 配置。
     
 
  "A~a±OD"e^E^1'O~A~N!"I^i
  --with-oracle[=DIR] ±à`O"e PHP lbnot
 DIR u"A"Anot`E"I"Ou^EC>>· 3/4 ^3±"a'A? ORACLE_HOME!lb
  本扩展模块在 php.ini 中未定义任何设置指令。 以下常量由本扩展模块定义,因此只有在本扩展模块被编译到
PHP 中,或者在运行时被动态加载后才有效。 
     例子 1. OCI 提示 
<?php // by sergo at bacup dot ru
  // Use option: OCI_DEFAULT for execute command to delay execution OCIExecute($stmt, OCI_DEFAULT);
  // for retrieve data use (after fetch):
  $result = OCIResult($stmt, $n); if (is_object($result)) $result = $result->load();
  // For INSERT or UPDATE statement use:
  $sql = "insert into table (field1, field2) values (field1 = 'value',  field2 = empty_clob()) returning field2 into :field2"; OCIParse($conn, $sql); $clob = OCINewDescriptor($conn, OCI_D_LOB); OCIBindByName($stmt, ":field2", &$clob, -1, OCI_B_CLOB); OCIExecute($stmt, OCI_DEFAULT); $clob->save("some text"); OCICommit($conn);
  ?>
 |  
  |   
    
     你可以使用与命令行相同的方法来访问存储过程。
     例子 2. 使用存储过程 
<?php // by webmaster at remoterealty dot com $sth = OCIParse( $dbh, "begin sp_newaddress( :address_id, '$firstname',  '$lastname', '$company', '$address1', '$address2', '$city', '$state',  '$postalcode', '$country', :error_code );end;");
  // This calls stored procedure sp_newaddress, with :address_id being an // in/out variable and :error_code being an out variable.  // Then you do the binding:
     OCIBindByName($sth, ":address_id", $addr_id, 10);    OCIBindByName($sth, ":error_code", $errorcode, 10);    OCIExecute($sth);
  ?>
 |  
  |   
     |