|
LXXIV. 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 配置。
安装
你必须使用选项
--with-oracle[=DIR] 编译 PHP ,
DIR 的默认值是环境变量 ORACLE_HOME。
预定义常量
由于这些常量是由该扩展模块定义的,因此只有在该扩展模块被编译到 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);
?>
|
|
| |