[ 永遠的UNIX::UNIX技術資料的寶庫 ]   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)

===更多相關===
 

★  樊強制作 歡迎分享  ★