动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

 Oracle 数据库函数库

作者来源: 
阅读 2013 人次 , 2006-3-29 4:06:00 


 要使用这个函数库,要在安装 php 及 apache server 之前先将 oracle 数据库安装好,并确定 oracle 能够顺利运作。之后在 php 配置 (configure) 时加入 --with-oracle=dir 的选项,dir 就是 $oracle_home 环境变量,例如:
 ./configure --with-oracle=/abc/def/oracle/product/7.0.3 --with-apache=../apache_1.3.x --enable-track-vars
 以下的范例是 stevel@nettek-llc.com (22-jan-1999) 所提供的。这个范例是返回 oracle 中 sid1 数据库 (database) 的 emp 资料表 (table) 所有资料。帐号是 scott、密码为 tiger。
  <?php
putenv ( "oracle_sid=sid1" );
putenv ( "oracle_home=/u01/app/oracle/product/8.0.5" );
$handle = ora_plogon ( "scott@sid1" , "tiger" ) or die;
$cursor = ora_open ( $handle );
ora_commitoff ( $handle );
$query = "select * from emp" ;
ora_parse ( $cursor , $query ) or die;
ora_exec ( $cursor );
echo "<html><pre>\n" ;
echo "$query \n\n " ;
$numcols = 0 ;
while( ora_fetch ( $cursor )) {
$numcols = ora_numcols ( $cursor );
for ( $column = 0 ; $column < $numcols ; $column ++) {
$data = trim ( ora_getcolumn ( $cursor , $column ));
if( $data == "" ) $data = "null" ;
echo "$data \t " ;
}
echo "\n" ;
}
$numrows = ora_numrows ( $cursor );
echo " \n rows returned: $numrows \n " ;
echo "</pre></html>\n" ;
ora_close ( $cursor );
?>
kk@shonline.de (05-aug-1998) 指出 oracle_home 为 oracle 的安装路径,oracle_sid 为 oracle 的数据库名称,若不知道这二个环境变量可以用 sqlplus 连上 oracle 来查证。

ora_bind: 链接 php 变量到 oracle 参数。
ora_close: 关闭一个 oracle 的 cursor。
ora_columnname: 得到 oracle 返回列 (column) 的名称。
ora_columntype: 得到 oracle 返回列 (column) 的类型。
ora_commit: 将 oracle 的交易处理付诸实行。
ora_commitoff: 关闭自动执行 oracle 交易改动的功能。
ora_commiton: 打开自动执行 oracle 交易改动的功能。
ora_error: 获得 oracle 错误信息。
ora_errorcode: 获得 oracle 错误代码。
ora_exec: 执行 oracle 的指令部分。
ora_fetch: 取得返回资料的一列 (row)。
ora_getcolumn: 从返回列 (row) 的资料取得一栏 (column)。
ora_logoff: 结束与 oracle 的链接。
ora_logon: 打开与 oracle 的链接。
ora_open: 打开 oracle 的 cursor。
ora_parse: 分析 sql 语法。
ora_rollback: 撤消当前交易。
ora_do: 快速的 sql 查询。
ora_fetchinto: 取回 oracle 资料放入数组。
ora_columnsize: 取得字段类型的大小。
ora_numcols: 取得字段的数目。
ora_plogon: 打开与 oracle 的长期链接。

ora_bind
链接 php 变量到 oracle 参数。
语法: int ora_bind(int cursor, string php variable name, string sql parameter name, int length, int [type]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数将 php 变量与 sql 参数系结在一起。sql 参数 (sql parameter) 必须是类似 ":name" 的型式。语法中的 type 为可省略的参数选项,可以设成下面三种数字之一:0 为默认值,表输入/输出 (in/out);1 表输入 (in);2 表输出 (out)。在 php 3.0.1 版之后,亦可以使用下列常量代替 type 的三种数字值:ora_bind_inout、ora_bind_in 或 ora_bind_out。重要的是本函数应是在 ora_parse() 之后与 ora_exec() 之前呼叫使用。若成功则返回 true,反之返回 false。要处理详细的错误信息可使用 ora_error() 及 ora_errorcode()。
使用范例
<?php
ora_parse($curs, "declare tmp integer; begin tmp := :in; :out := tmp; :x := 7.77; end;");
ora_bind($curs, "result", ":x", $len, 2);
ora_bind($curs, "input", ":in", 5, 1);
ora_bind($curs, "output", ":out", 5, 2);
$input = 765;
ora_exec($curs);
echo "result: $result<br>out: $output<br>in: $input";
?>

ora_close
关闭一个 oracle 的 cursor。
语法: int ora_close(int cursor);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数将 ora_open() 打开的游标 (cursor) 关闭。若成功则返回 true,反之返回 false。要处理详细的错误信息可使用 ora_error() 及 ora_errorcode()。

ora_columnname
得到 oracle 返回列 (column) 的名称。
语法: string ora_columnname(int cursor, int column);
返回值: 字符串
函数种类: 数据库功能
内容说明: 本函数返回的名称全都转成英文大写字母。

ora_columntype
得到 oracle 返回列 (column) 的类型。
语法: string ora_columntype(int cursor, int column);
返回值: 字符串
函数种类: 数据库功能
内容说明: 返回的类型值为下面类型之一:
varchar2
varchar
char
number
long
long raw
rowid
date
cursor

ora_commit
将 oracle 的交易处理付诸实行。
语法: int ora_commit(int conn);
返回值: 整数
函数种类: 数据库功能
内容说明: 返回值 true 表示成功,false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。本函数会将最近一次 commit/rollback 后的交易 (transaction) 做永久性的修改,当与 oracle 数据库连接确认后自动执行功能 (autocommit) 会关闭。

ora_commitoff
关闭自动执行 oracle 交易改动的功能。
语法: int ora_commitoff(int conn);
返回值: 整数
函数种类: 数据库功能
内容说明: 返回值 true 表示成功,false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。在每次使用 ora_exec() 之后,本函数会关闭自动执行功能。

ora_commiton
打开自动执行 oracle 交易改动的功能。
语法: int ora_commiton(int conn);
返回值: 整数
函数种类: 数据库功能
内容说明: 返回值 true 表示成功,false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。在每次使用 ora_exec() 后的连接时,本函数会打开自动执行功能。

ora_error
获得 oracle 错误信息。
语法: string ora_error(int cursor);
返回值: 字符串
函数种类: 数据库功能
内容说明: 返回类似 xxx-nnnnn 格式的错误信息,其中的 xxx 表示错误发生的地方 nnnnn 用来验证错误的信息。在 unix 版的 oracle 上,可以找到类似以下的错误信息详细说明:
oerr ora 00001
00001, 00000, "unique constraint (%s.%s) violated"
// *cause: an update or insert statement attempted to insert a duplicate key
// for trusted oracle configured in dbms mac mode, you may see
// this message if a duplicate entry exists at a different level.
// *action: either remove the unique restriction or do not insert the key

ora_errorcode
获得 oracle 错误代码。
语法: int ora_errorcode(int cursor);
返回值: 整数
函数种类: 数据库功能
内容说明: 返回数字类型的错误代码。

ora_exec
执行 oracle 的指令部分。
语法: int ora_exec(int cursor);
返回值: 整数
函数种类: 数据库功能
内容说明: 返回值 true 表示成功,false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。

ora_fetch
取得返回资料的一列 (row)。
语法: int ora_fetch(int cursor);
返回值: 整数
函数种类: 数据库功能
内容说明: 返回值 true 表示成功取回一列,false 表示本列是空的或发生其它错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。若没有发生错误,ora_errorcode() 会返回 0。

ora_getcolumn
从返回列 (row) 的资料取得一栏 (column)。
语法: mixed ora_getcolumn(int cursor, mixed column);
返回值: 混合类型资料
函数种类: 数据库功能
内容说明: 返回一栏资料。若发生错误,ora_errorcode() 会返回非 0 的数值。值得注意的是,若返回的是空的字符串,或者返回整数 0,均不算错误,程序中必须自行处理这种情形。

ora_logoff
结束与 oracle 的链接。
语法: int ora_logoff(int connection);
返回值: 整数
函数种类: 数据库功能
内容说明: 返回值 true 表示成功,false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。本函数会登出数据库 (logout) 并结束与 oracle 服务器的链接。

ora_logon
打开与 oracle 的链接。
语法: int ora_logon(string user, string password);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数使 php 与 oracle 建立链接。亦可以利用 sql*net 提供的 tns name 链接到远端的数据库,方法如下:
$conn = ora_logon("user@tnsname", "pass");
连接成功会返回整数的索引值,返回 false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。对美国以外的国家,数据库中可能会有非 ascii 字符的情形,这时需要在环境变量中加入 nls_lang 的变量。例如:若查询返回资料中有中文 big5 码的资料,在 ora_logon() 之前加入以下的程序码
putenv("nls_lang=american_taiwan.zht16big5");
使用范例
pwalker@pwccanada.com (21-sep-1998) 提供了这二个范例
1. 连接到与 web 服务器同一台的 oracle 数据库可用
<?
ora_logon("system" , "manager"); 或
ora_logon("system/manager" , "");
?>
2. 连接到远端 oracle 服务器要利用 sql*net 或 net8
<?
ora_logon("system/manager@host" , "");
?>

ora_open
打开 oracle 的 cursor。
语法: int ora_open(int connection);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数使与 oracle 连接并打开 cursor。连接成功会返回 cursor 的索引值,返回 false 表示发生错误。详细的错误纠错可以使用 ora_error() 及 ora_errorcode()。

ora_parse
分析 sql 语法。
语法: int ora_parse(int cursor_ind, string sql_statement, int defer);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数可用来分析 sql 语法或是 pl/sql 部分是否有错误。返回 0 表示无误,返回为 -1 表示有错误发生。

ora_rollback
撤消当前交易。
语法: int ora_rollback(int connection);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数取消 oracle 交易处理 (transaction) 对数据库所做的修改。若成功则返回 true,反之返回 false。要处理详细的错误信息可使用 ora_error() 及 ora_errorcode()。

ora_do
快速的 sql 查询。
语法: ora_do($conn, $query);
函数种类: 数据库功能
内容说明: kk@shonline.de (05-aug-1998) 指出以上 17 个 php 的官方公布的函数是 php2 就有的,没有加入 php3 的新函数。本函数开始是 kk@shonline.de 所整理的函数。本函数结合了 ora_parse(), ora_exec(), ora_fetch() 等功能,提供一次快速的 sql 查询。

ora_fetchinto
取回 oracle 资料放入数组。
语法: ora_fetchinto($curs, &$ary);
函数种类: 数据库功能
内容说明: 本函数将对 oracle 取回的资料放入数组 ary 中。返回每列的字段数目,若失败则返回 false。

ora_columnsize
取得字段类型的大小。
语法: ora_columnsize($curs, $colindex);
函数种类: 数据库功能
内容说明: 本函数可以取得字段 (column) 类型 (type) 的大小。计算从 0 开始。

ora_numcols
取得字段的数目。
语法: ora_numcols($curs);
函数种类: 数据库功能
内容说明: 本函数返回字段 (column) 的数目。这个函数只在执行了 ora_parse()/ora_exec()/ora_fetch() 或是 ora_do() 才有用。

ora_plogon
打开与 oracle 的长期链接。
语法: int ora_plogon(string user, string password);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数使 php 与 oracle 建立链接,功能与 ora_logon() 函数类似,但使用本函数会一直与数据库连接直到停止 apache 服务器,这会使与 oracle 连接速度更快,但需要更多的内存。亦可参考 mysql_pconnect() 获得更多的细节资料。

 本文Tagsoracle  数据库  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Perl 相容语法函数库
· 下一篇:Oracle 8 数据库函数库
· 用PHP开发健壮的代码(一):高屋建瓴的介绍
· 模板,PHPLIB处理方式(二)
· 最简单的文本计数器
· PHP/MySQL三日通-第二天(三)
· 解决部分环境不能操作系统对话框的问题


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077