oracle数据库:Oracle 8 数据库函数库

="t18">
由于本库都是 Oracle8 Call-Interface (OCI8) 来存取 Oracle 数据库因此在装设 Oracle 8 Client Web 服务器上可用本库存取 Oracle 7.x 或 8.x 2种版本数据库服务器
OCIDefineByName: 让 SELECT 指令可使用 PHP 变量
OCIBindByName: 让动态 SQL 可使用 PHP 变量
OCILogon: 打开和 Oracle 链接
OCILogOff: 关闭和 Oracle 链接
OCIExecute: 执行 Oracle 指令部分
OCICommit: 将 Oracle 交易处理付诸实行
OCIRollback: 撤消当前交易
OCINumRows: 取得受影响字段数目
OCIResult: 从目前列 (row) 资料取得栏 (column)
OCIFetch: 取得返回资料列 (row)
OCIFetchInto: 取回 Oracle 资料放入
OCIColumnIsNULL: 测试返回行是否为空
OCIColumnSize: 取得字段类型大小
OCINewDescriptor: LOB/FILE 描述
OCIParse: 分析 SQL 语法 OCIDefineByName
让 SELECT 指令可使用 PHP 变量
语法: boolean OCIDefineByName( stmt, ColumnName, mixed &variable, [type]);
返回值: 布尔值
种类: 数据库功能
内容介绍说明: 本用来定义指定 PHP 变量使其能供 SQL 指令中 SELECT 指令使用在大小写问题上要注重 Oracle 数据库中字段名称其实都是大写名字参数 stmt 是经过 Oracle 解析 (OCIParse) 后串指针参数 ColumnName 是 Oracle 资料表上字段名称参数 variable 前面定要加 & 符号表 PHP 变量位址参数 type 通常省略治募注重是欲使用 Oracle 8 中特有新资料类型 LOB/ROWID/BFILE 等时需要先执行 OCINewDescriptor 执行本成功则返回 true 值
使用范例
这个范例是 [email protected] 所提出
<?php
$conn = OCILogon("scott","tiger");
$stmt = OCIParse($conn,"select empno, ename from emp");
/* 使用 OCIDefineByName 要在执行 OCIExecute 前 */
OCIDefineByName($stmt,"EMPNO",&$empno);
OCIDefineByName($stmt,"ENAME",&$ename);
OCIExecute($stmt);
while (OCIFetch($stmt)) {
echo "empno:".$empno."\n";
echo "ename:".$ename."\n";
}
OCIFreeStatement($stmt);

OCILogoff($conn);
?> OCIBindByName
让动态 SQL 可使用 PHP 变量
语法: boolean OCIBindByName( stmt, ph_name, mixed &variable, length, [type]);
返回值: 布尔值
种类: 数据库功能
内容介绍说明: 本用来定义指定 PHP 变量使其能供动态 SQL 指令 (Oracle Placeholder) 使用在大小写问题上要注重 Oracle 数据库中字段名称其实都是大写名字参数 stmt 是经过 Oracle 解析 (OCIParse) 后串指针参数 ph_name 即为欲供动态 SQL 指令所使用变量参数 variable 前面定要加 & 符号表 PHP 变量位址参数 length 为资料长度若设为 -1 则使用指定 variable 资料最大值参数 type 可省略其值有 OCI_B_FILE ( 2进位文件)、OCI_B_CFILE (文字文件)、OCI_B_CLOB (文字 LOB)、OCI_B_BLOB (位 LOB) 及 OCI_B_ROWID (ROWID) 等数种治募注重是欲使用 Oracle 8 中特有新资料类型 LOB/ROWID/BFILE 等时需要先执行 OCINewDescriptor 同时必须要将 length 参数设成 -1执行本成功则返回 true 值
使用范例
这个范例是 [email protected] 所提出它加入 3笔资料到 emp 资料表中并使用 ROWID 来更新资料
<?php
$conn = OCILogon("scott", "tiger");
$stmt = OCIParse($conn,"insert o emp (empno, ename) "."values (:empno,:ename) "."ing ROWID o :rid");
$data = .gif' />(1111 => "Larry", 2222 => "Bill", 3333 => "Jim");
$rowid = OCINewDescriptor($conn, OCI_D_ROWID);
OCIBindByName($stmt, ":empno", &$empno, 32);
OCIBindByName($stmt, ":ename", &$ename, 32);
OCIBindByName($stmt, ":rid", &$rowid, -1, OCI_B_ROWID);
$update = OCIParse($conn, "update emp sal = :sal where ROWID = :rid");
OCIBindByName($update, ":rid", &$rowid, -1, OCI_B_ROWID);
OCIBindByName($update, ":sal", &$sal, 32);
$sal = 10000;
while (list($empno, $ename) = each($data)) {
OCIExecute($stmt);
OCIExecute($update);
}
$rowid->free;
OCIFreeStatement($update);
OCIFreeStatement($stmt);
$stmt = OCIParse($conn, "select * from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
while (OCIFetchInto($stmt, &$arr, OCI_ASSOC)) {
var_dump($arr);
}
OCIFreeStatement($stmt);
/* 删除刚加在 emp 资料表中 3笔资料 */
$stmt = OCIParse($conn, "delete from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
OCIFreeStatement($stmt);
OCILogoff($conn);
?> OCILogon
打开和 Oracle 链接
语法: OCILogon( username, passWord, [OCACLE_SID]);

返回值: 整数
种类: 数据库功能
内容介绍说明: 本使 PHP 和 Oracle 建立链接参数 username 和 password 分别为连接帐号及密码参数 OCACLE_SID 为数据库名称可省略返回值为连接代码 OCILogOff
关闭和 Oracle 链接
语法: boolean OCILogOff( connection);
返回值: 布尔值
种类: 数据库功能
内容介绍说明: 本使 PHP 和 Oracle 链接结束参数 connection 为连上 Oracle 连接代码返回值 true 表示成功false 表示发生 OCIExecute
执行 Oracle 指令部分
语法: boolean OCIExecute( statement, [mode]);
返回值: 布尔值
种类: 数据库功能
内容介绍说明: 本用来执行指定 Oracle 指令部分执行前必须先由 OCIParse 解析过该部分 SQL 语法参数 statement 为解析过代码参数 mode 可省略其默认值为 OCI_COMM99v_ON_SUCCESS返回值 true 表示成功false 表示发生 OCICommit
将 Oracle 交易处理付诸实行
语法: boolean OCICommit( connection);
返回值: 布尔值
种类: 数据库功能
内容介绍说明: 本会将最近次 commit/rollback 后交易 (transaction) 做永久性修改参数 connection 为连上 Oracle 连接代码返回值 true 表示成功false 表示发生 OCIRollback
撤消当前交易
语法: boolean OCIRollback( connection);
返回值: 布尔值
种类: 数据库功能
内容介绍说明: 本取消 Oracle 交易处理 (transaction) 对数据库所做修改
Tags:  oracle创建数据库 oracle数据库恢复 oracle数据库备份 oracle数据库

延伸阅读

最新评论

发表评论