GB | BIG5
|
| 首頁 > 編程技術 > Php > 正文 |
 |
| PHP4手冊:函數庫及函數(三十八) Oracle 資料庫函式庫 |
| http://netleader.126.com 星空浪子 (2001-04-18 15:43:09) |
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
--------------------------------------------------------------------------------
本函式庫共有 22 個函式
要使用這個函式庫,要在安裝 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。
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 "\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 "\nROWS RETURNED: $numrows\n";
echo " \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()
--------------------------------------------------------------------------------
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()。
使用范例
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 Out: $output In: $input";
?>
--------------------------------------------------------------------------------
函式:Ora_Close()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_Close
關閉一個 Oracle 的 cursor。
語法: int ora_close(int cursor);
傳回值: 整數
函式種類: 資料庫功能
內容說明
本函式將 ora_open() 開啟的遊標 (cursor) 關閉。若成功則傳回 true,反之傳回 false。要處理細部的錯誤訊息可使用 ora_error() 及 ora_errorcode()。
--------------------------------------------------------------------------------
函式:Ora_ColumnName()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_ColumnName
得到 Oracle 傳回列 (Column) 的名稱。
語法: string Ora_ColumnName(int cursor, int column);
傳回值: 字串
函式種類: 資料庫功能
內容說明
本函式傳回的名稱全都轉成英文大寫字母。
--------------------------------------------------------------------------------
函式:Ora_ColumnType()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_ColumnType
得到 Oracle 傳回列 (Column) 的型態。
語法: string Ora_ColumnType(int cursor, int column);
傳回值: 字串
函式種類: 資料庫功能
內容說明
傳回的型態值為下面型態之一:
VARCHAR2
VARCHAR
CHAR
NUMBER
LONG
LONG RAW
ROWID
DATE
CURSOR
--------------------------------------------------------------------------------
函式:Ora_Commit()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_Commit
將 Oracle 的交易處理付諸實行。
語法: int ora_commit(int conn);
傳回值: 整數
函式種類: 資料庫功能
內容說明
傳回值 true 表示成功,false 表示發生錯誤。詳細的錯誤糾錯可以使用 ora_error() 及 ora_errorcode()。本函式會將最近一次 commit/rollback 的交易 (transaction) 做永久性的修改,當與 Oracle 資料庫連線確認自動執行功能 (autocommit) 會關閉。
--------------------------------------------------------------------------------
函式:Ora_CommitOff()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_CommitOff
關閉自動執行 Oracle 交易更動的功能。
語法: int ora_commitoff(int conn);
傳回值: 整數
函式種類: 資料庫功能
內容說明
傳回值 true 表示成功,false 表示發生錯誤。詳細的錯誤糾錯可以使用 ora_error() 及 ora_errorcode()。在每次使用 ora_exec() 之,本函數會關閉自動執行功能。
--------------------------------------------------------------------------------
函式:Ora_CommitOn()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_CommitOn
打開自動執行 Oracle 交易更動的功能。
語法: int ora_commiton(int conn);
傳回值: 整數
函式種類: 資料庫功能
內容說明
傳回值 true 表示成功,false 表示發生錯誤。詳細的錯誤糾錯可以使用 ora_error() 及 ora_errorcode()。在每次使用 ora_exec() 的連線時,本函數會打開自動執行功能。
--------------------------------------------------------------------------------
函式:Ora_Error()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
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 資料庫函式庫
Ora_ErrorCode
獲得 Oracle 錯誤代碼。
語法: int Ora_ErrorCode(int cursor);
傳回值: 整數
函式種類: 資料庫功能
內容說明
傳回數字型態的錯誤代碼。
--------------------------------------------------------------------------------
函式:Ora_Exec()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_Exec
執行 Oracle 的指令區段。
語法: int ora_exec(int cursor);
傳回值: 整數
函式種類: 資料庫功能
內容說明
傳回值 true 表示成功,false 表示發生錯誤。詳細的錯誤糾錯可以使用 ora_error() 及 ora_errorcode()。
--------------------------------------------------------------------------------
函式:Ora_Fetch()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_Fetch
取得傳回資料的一列 (row)。
語法: int ora_fetch(int cursor);
傳回值: 整數
函式種類: 資料庫功能
內容說明
傳回值 true 表示成功取回一列,false 表示本列是空的或發生其它錯誤。詳細的錯誤糾錯可以使用 ora_error() 及 ora_errorcode()。若沒有發生錯誤,ora_errorcode() 會傳回 0。
--------------------------------------------------------------------------------
函式:Ora_GetColumn()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_GetColumn
從傳回列 (row) 的資料取得一欄 (column)。
語法: mixed ora_getcolumn(int cursor, mixed column);
傳回值: 混合型態資料
函式種類: 資料庫功能
內容說明
傳回一欄資料。若發生錯誤,ora_errorcode() 會傳回非 0 的數值。值得注意的是,若傳回的是空的字串,或者傳回整數 0,均不算錯誤,程式中必須自行處理這種情形。
--------------------------------------------------------------------------------
函式:Ora_Logoff()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_Logoff
結束與 Oracle 的連結。
語法: int ora_logoff(int connection);
傳回值: 整數
函式種類: 資料庫功能
內容說明
傳回值 true 表示成功,false 表示發生錯誤。詳細的錯誤糾錯可以使用 ora_error() 及 ora_errorcode()。本函式會登出資料庫 (Logout) 並結束與 Oracle 伺服器的連結。
--------------------------------------------------------------------------------
函式:Ora_Logon()
--------------------------------------------------------------------------------
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 資料庫函式庫
Ora_Open
開啟 Oracle 的 cursor。
語法: int ora_open(int connection);
傳回值: 整數
函式種類: 資料庫功能
內容說明
本函式使與 Oracle 連線並打開 cursor。連線成功會傳回 cursor 的索引值,傳回 false 表示發生錯誤。詳細的錯誤糾錯可以使用 ora_error() 及 ora_errorcode()。
--------------------------------------------------------------------------------
函式:Ora_Parse()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_Parse
分析 SQL 語法。
語法: int ora_parse(int cursor_ind, string sql_statement, int defer);
傳回值: 整數
函式種類: 資料庫功能
內容說明
本函式可用來分析 SQL 語法或是 PL/SQL 區段是否有錯誤。傳回 0 表示無誤,傳回為 -1 表示有錯誤發生。
--------------------------------------------------------------------------------
函式:Ora_Rollback()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_Rollback
撤消當前交易。
語法: int ora_rollback(int connection);
傳回值: 整數
函式種類: 資料庫功能
內容說明
本函式取消 Oracle 交易處理 (transaction) 對資料庫所做的修改。若成功則傳回 true,反之傳回 false。要處理細部的錯誤訊息可使用 ora_error() 及 ora_errorcode()。
--------------------------------------------------------------------------------
函式:Ora_Do()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
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
取回 Oracle 資料放入陣列。
語法: Ora_FetchInto($curs, &$ary);
函式種類: 資料庫功能
內容說明
本函式將對 Oracle 取回的資料放入陣列 ary 中。傳回每列的欄位數目,若失敗則傳回 false。
--------------------------------------------------------------------------------
函式:Ora_ColumnSize()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_ColumnSize
取得欄位型態的大小。
語法: ora_columnsize($curs, $colindex);
函式種類: 資料庫功能
內容說明
本函式可以取得欄位 (column) 型態 (type) 的大小。計算從 0 開始。
--------------------------------------------------------------------------------
函式:Ora_Numcols()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_Numcols
取得欄位的數目。
語法: ora_numcols($curs);
函式種類: 資料庫功能
內容說明
本函式傳回欄位 (column) 的數目。這個函式只在執行了 ora_parse()/ora_exec()/ora_fetch() 或是 ora_do() 才有用。
--------------------------------------------------------------------------------
函式:Ora_PLogon()
--------------------------------------------------------------------------------
Oracle 資料庫函式庫
Ora_PLogon
開啟與 Oracle 的長期連結。
語法: int ora_plogon(string user, string password);
傳回值: 整數
函式種類: 資料庫功能
內容說明
本函式使 PHP 與 Oracle 建立連結,功能與 ora_logon() 函式類似,但使用本函式會一直與資料庫連線直到停止 Apache 伺服器,這會使與 Oracle 連線速度更快,但需要更多的記憶體。亦可參考 mysql_pconnect() 獲得更多的細節資料。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
PHP4手冊:函數庫及函數(四十六) SNMP 網管函式庫 (2001-04-18 16:56:55) PHP4手冊:函數庫及函數(四十五) Solid 資料庫連結函式庫 (2001-04-18 16:54:16) PHP4手冊:函數庫及函數(四十四) 信號與共享記憶體函式庫 (2001-04-18 16:49:09) PHP4手冊:函數庫及函數(四十三) 常規表示法函式庫 (2001-04-18 16:40:33) PHP4手冊:函數庫及函數(四十二) URL 處理函式庫 (2001-04-18 16:37:13) PHP4手冊:函數庫及函數(四十一) PostgreSQL 資料庫函式庫 (2001-04-18 15:58:12) PHP4手冊:函數庫及函數(四十) PDF 格式檔案函式庫 - 2 (2001-04-18 15:53:53) PHP4手冊:函數庫及函數(四十) PDF 格式檔案函式庫 - 1 (2001-04-18 15:53:35) PHP4手冊:函數庫及函數(三十九) Perl 相容語法函式庫 (2001-04-18 15:45:08) PHP4手冊:函數庫及函數(三十八) Oracle 資料庫函式庫 (2001-04-18 15:43:09)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |