oci_connect 建立一个到 Oracle 服务器的连接 php函数


oci_connect

(PHP 5, PECL OCI8 >= 1.1.0)

oci_connect建立一个到 Oracle 服务器的连接

说明

resource oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )

oci_connect() 返回一个大多数 OCI 调用都需要的连接标识符。可选的第三个参数可以包含想要连接的本地 Oracle 的实例的或者在 tnsnames.ora 中的条目的名字。如果没有指定可选的第三个参数,PHP 使用环境变量 ORACLE_SID(Oracle 实例)或 TWO_TASKtnsnames.ora)来确定连接哪一个数据库。

session_mode 参数自版本 1.1 起可用并接受如下值:OCI_DEFAULTOCI_SYSOPEROCI_SYSDBA。如果指定了 OCI_SYSOPEROCI_SYSDBA 其中之一,oci_connect() 将尝试使用外部认证信息建立特权连接。特权连接默认被禁止。要启用,需要将 oci8.privileged_connect 设为 On。

Note: 如果 PHP 用的是 Oracle Instant Client,可以用容易的命名连接方法,说明见这里:» http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm。基本上这意味着可以指定 "//db_host[:port]/database_name" 作为数据库名。但如果想用命名的旧方法则必须设定 ORACLE_HOMETNS_ADMIN 二者之一。

Note: oci_connect() 用同样的参数第二次及之后的调用将返回第一次调用所返回的连接句柄。也就是说对一个句柄发出的查询也适用于另一个句柄,因为它们是同一个句柄。此行为演示于下面的例 1。如果需要两个句柄在事务上互相隔离开,应该使用 oci_new_connect() 来替代。

使用 Oracle 客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配,Oracle 会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集,可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定,Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

Example #1 oci_connect() 例子

<?php
echo "<pre>";
$db "";

$c1 oci_connect("scott""tiger"$db);
$c2 oci_connect("scott""tiger"$db);

function 
create_table($conn)
{
  
$stmt oci_parse($conn"create table scott.hallo (test varchar2(64))");
  
oci_execute($stmt);
  echo 
$conn " created table ";
}

function 
drop_table($conn)
{
  
$stmt oci_parse($conn"drop table scott.hallo");
  
oci_execute($stmt);
  echo 
$conn " dropped table ";
}

function 
insert_data($conn)
{
  
$stmt oci_parse($conn"insert into scott.hallo
            values('
$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  
oci_execute($stmtOCI_DEFAULT);
  echo 
$conn " inserted hallo ";
}

function 
delete_data($conn)
{
  
$stmt oci_parse($conn"delete from scott.hallo");
  
oci_execute($stmtOCI_DEFAULT);
  echo 
$conn " deleted hallo ";
}

function 
commit($conn)
{
  
oci_commit($conn);
  echo 
$conn " committed ";
}

function 
rollback($conn)
{
  
oci_rollback($conn);
  echo 
$conn " rollback ";
}

function 
select_data($conn)
{
  
$stmt oci_parse($conn"select * from scott.hallo");
  
oci_execute($stmtOCI_DEFAULT);
  echo 
$conn."----selecting ";
  while (
oci_fetch($stmt)) {
    echo 
$conn " [" oci_result($stmt"TEST") . "] ";
  }
  echo 
$conn "----done ";
}

create_table($c1);
insert_data($c1);   // Insert a row using c1
insert_data($c2);   // Insert a row using c2

select_data($c1);   // Results of both inserts are returned
select_data($c2);

rollback($c1);      // Rollback using c1

select_data($c1);   // Both inserts have been rolled back
select_data($c2);

insert_data($c2);   // Insert a row using c2
commit($c2);        // Commit using c2

select_data($c1);   // Result of c2 insert is returned

delete_data($c1);   // Delete all rows in table using c1
select_data($c1);   // No rows returned
select_data($c2);   // No rows returned
commit($c1);        // Commit using c1

select_data($c1);   // No rows returned
select_data($c2);   // No rows returned

drop_table($c1);
echo 
"</pre>";
?>

oci_connect() 如果出错则返回 FALSE

Note:

在 PHP 5.0.0 之前的版本必须使用 ocilogon() 替代本函数。该函数名仍然可用,为向下兼容作为 oci_connect() 的别名。不过其已被废弃,不推荐使用。

参见 oci_pconnect()oci_new_connect()oci_close()



相关阅读:
oci_define_by_name 在 SELECT 中使用 PHP 变量作为定义的步骤
oci_error 返回上一个错误
oci_execute 执行一条语句
oci_fetch Fetches the next row into result-buffer
oci_fetch_all 获取结果数据的所有行到一个数组
oci_fetch_array Returns the next row from a query as an associative or numeric array
oci_fetch_assoc Returns the next row from a query as an associative array
oci_fetch_object Returns the next row from a query as an object
oci_fetch_row Returns the next row from a query as a numeric array
oci_field_is_null 检查字段是否为 NULL
oci_field_name 返回字段名
oci_field_precision 返回字段精度
oci_field_scale 返回字段范围
oci_field_size 返回字段大小
快速导航

Copyright © 2016 phpStudy |