這些函數允許你存取 oracle8 和 oracle7 數據庫. 他使用 oracle8 的點用接口 (oci8). 使用這個擴展模塊,你需要 oracle8 客戶端庫文件.
這個擴展模塊比標準 oracle 模塊更流暢。他支持用于 oracle 站位符的全局和本機 php 變量。有完整的 lob, 文件和 rowid 支持,允許使用用戶提供的定義的變量.
在使用這個擴展之前,確認你已經正確的安裝了 oracle 用戶需要的 oracle 環境變量, 和用于 daemon 用戶的一樣. 需要設置的變量大致為如下幾個:
oracle_home
oracle_sid
ld_preload
ld_library_path
nls_lang
ora_nls33
在設置了你的 web 服務器用戶的環境變量之后,確認在你的 oracle 組里面加入了 web服務器用戶 (nobody, www).
例 1.
<?php
// 作者 [email protected]
// 使用參數配置: oci_default 執行命令來延遲執行
ociexecute($stmt, oci_default);
// 得到數據:
$result = ociresult($stmt, $n);
if (is_object ($result)) $result = $result->load();
// 進行插入或者更新操作:
$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");
?>
你可以用同樣簡單的方法存儲程序命令行.
例 2. 用于存儲進程(程序)
<?php
// 作者 [email protected]
$sth = ociparse ( $dbh, "begin sp_newaddress( :address_id, ’$firstname’,
’$lastname’, ’$company’, ’$address1’, ’$address2’, ’$city’, ’$state’,
’$postalcode’, ’$country’, :error_code );end;" );
// 這個調用用于存儲進程 sp_newaddress, 使用 :address_id 開始一個
// in/out 變量和 :error_code 用于輸出變量.
// 這樣實現捆綁:
ocibindbyname ( $sth, ":address_id", $addr_id, 10 );
ocibindbyname ( $sth, ":error_code", $errorcode, 10 );
ociexecute ( $sth );
?>
函數列表
ocidefinebyname — 在一個 select 過程中定義步驟里使用 php 變量
ocibindbyname — 為一個 oracle 站位符捆綁一個 php 變量
ocilogon — 建立一個與 oracle 的連接
ociplogon — 連接一個 oracle 數據庫同時使用存在的連接登陸,返回一個新的 session.
ocinlogon — 連接一個 oracle 數據庫同時使用新的連接登陸,返回一個新的 session.
ocilogoff — 斷開與 oracle 的連接
ociexecute — 執行一個語句
ocicommit — 提交 outstanding transactions
ocirollback — 回退 outstanding transactions
ocinewdescriptor — 初始化一個新的空的描述符 lob/file (lob 是默認值)
ocirowcount — 獲得返回的行數
ocinumcols — 返回一個語句結果的列數
ociresult — 返回返回行的列數
ocifetch — 在結果緩沖區里取得下一行
ocifetchinto — 在結果數組里取得下一行
ocifetchstatement — 以數據形式返回結果數據的所有行.
ocicolumnisnull — 測試結果的某列是否為空 null
ocicolumnsize — 返回結果列的大小
ociserverversion — 返回包含服務器信息的字符串.
ocistatementtype — 返回一個 oci 語句的類型.
ocinewcursor — 返回一個新的光標 (語句句柄) - 用于捆綁 ref-cursors!
ocifreestatement — 釋放與某語句相關的所有資源.
ocifreecursor — 釋放與某光標相關的所有資源.
ocifreedesc — 刪除一個大型的物體描述符.
ocicolumnname — 返回列的名字.
ocicolumntype — 返回列的類型.
ociparse — 解析一個查詢返回一個語句
ocierror — 返回最后一個 stmt|conn|global 錯誤. 如果沒有錯誤發生則返回 false.
ociinternaldebug — 打開或關閉內部調試輸出. 缺省時關閉