當前位置:首頁 » Perl » Perl Oraperl手冊

Perl Oraperl手冊

Perl Oraperl手冊,學習例子,實例代碼,教學等。

Oraperl是一個擴展的Perl允許訪問到Oracle數據庫。為了使oraperl函數定義在perl5使用,你需要安排到在每個文件或程序包使用'use“Oraperl.pm模塊。

為此,可以在每個文件或程序包簡單地增加Oraperl。

在腳本放在一個下麵一行:

eval 'use Oraperl; 1;' || die $@ if $] >= 5;

要了解oraperl模塊有以下重要的Perl函數。

  • &ora_login() - 用於登錄到Oralce數據庫。

  • &ora_open() - 被用來執行任意SQL命令。

  • &ora_bind() - 用於指定替代變量的實際值。

  • &ora_fetch() - 用於結合SQL SELECT語句從數據庫中檢索信息。

  • &ora_close() - 用於關閉ORALCE連接。

  • &ora_do() - 被用來作為一種替代&ora_open()和&ora_close()。

  • &ora_logoff - 使用oracle的退出。

還有其他的輔助功能,我們將在本次討論詳說。

數據庫連接使用ora_login():

為了訪問在Oracle數據庫的信息,程序必須首先登錄到該通過調用ora_login()函數。調用此函數有三個參數,使用的Oracle數據庫係統ID,Oracle的用戶名和密碼。返回的值是一個標識符實際上是一個Oracle的登錄數據區。

語法:

$lda = &ora_login($system_id, $username, $password)

這裡如果$system_id是空的,那麼這個調用將使用ORALDE_SID 或 TASK_TWO 環境變量來標識oracle係統。

$lda 是登錄數據區域,將用於所有後續調用中。

例子:

下麵的例子將連接數據庫的用戶名和密碼分彆作為guest,密碼guest123

my $system_id = "yiibaicom";
my $username = "guest";
my $password = "guest123";
#by www.gitbook.net
$lda = &ora_login($system_id, $username, $password)

使用wora_open()執行SQL命令:

函數ora_open需要至少兩個參數: 登錄標識符&ora_login()和將要執行的SQL語句。可選的第三個參數指定使用一個SELECT語句高速緩存行的大小。

如果該行高速緩存的大小冇有指定,則使用缺省大小。因為分布式,默認為5行,但是這可能會在安裝已經改變。 檢查$ora_cache 變量.

語法 :

$csr = &ora_open($lda, $statement [, $cache]);

從ora_open()返回的值是一個語句的標識符實際上是Oracle 遊標表現為$csr。

例子 :

試一試以下的例子

$csr = &ora_open($lda, 'select ename, sal from emp order by ename', 10);
$csr = &ora_open($lda, 'insert into dept values(:1, :2, :3)');

第二次調用ora_bind()函數變量的值將被取代。

使用ora_bind()綁定變量值:

如果SQL語句包含替換變量(見上麵的例子中的值:1:2:3)那麼提供實際值使用ora_bind函數。這需要聲明的標識符獲得ora_open()調用的第一個參數,其次是許多參數之必需聲明。

語法 :

&ora_bind($csr, $var, ...);

例子 :

試試下麵的例子中,上述INSERT語句提供值

&ora_bind($csr, 50, 'management', 'Paris');

使用ora_fetch()從數據庫取回值:

ora_fetch函數配合一個SQL SELECT語句從數據庫中檢索信息。這個函數需要一個強製參數,從ora_open()獲得聲明的標識符。

在標量上下文中,該函數返回查詢所返回的字段的數量,但冇有數據被實際提取。

在數組環境中,該函數返回一個數組,包含的數據,每個字段一個元素。

語法 :

# Calling in scalar context
$nfields = &ora_fetch($csr);
# Calling in array conext
#by www.gitbook.net
@data = &ora_fetch($csr);

每次調用這個函數會返回一個單列。 要獲取多個行多,在一個while循環裡你需要多次調用這個函數。

函數ora_fetch()數據結束時調用失敗或有一個錯誤發生。 這是能夠在區分這些情況下,所檢測變量$ora_errno的值。 數據結束時是一個零值,如果發生了一個錯誤那麼是非零值

實例 :

試試下麵的例子從數據庫中獲取值。

 while (($deptno, $dname, $loc) = &ora_fetch($csr))
 {
   warn "Truncated!!!" if $ora_errno == 1406;
   # do something with the data
 }
 warn $ora_errstr if $ora_errno;

使用ora_close關閉數據庫連接:

如果不再需要執行SQL語句,那麼聲明的標識符應該被釋放。這可通過調用ora_close()函數的聲明的標識符作為其唯一的參數。

語法 :

&ora_close($csr);

使用ora_do() 函數:

所有SQL語句不返回數據或包含替代變量。因此,在這種情況下,函數ora_do可用於&ora_open()和&ora_close()作為一種替代。

這個函數有兩個參數,登錄標識符和要執行的語句。

語法 :

&ora_do($lda, $statement)

例子 :

如下兩個例子也做同樣的工作:

ora_do:

&ora_do($lda, 'drop table employee');

ora_open 和 ora_close

&ora_close( &ora_open($lda, 'drop table employee') );

Ancillary 函數:

有以下輔助功能,將用於trime剔除:

ora_titles() 函數:

一個程序可以決定執行查詢的字段標題通過調用&ora_titles()。 這個函數接受一個參數,聲明的標識符和ora_open()指示需要查詢標題。返回一個字符串數組,每列的一個標題。

語法 :

@titles = &ora_titles($csr);

ora_lengths() 函數:

一個程序可以查詢所返回的調用和ora_lengths()函數確定每個字段的長度。這個函數接受一個參數,聲明的標識符&ora_open() 指示的查詢為所需的長度。

語法 :

@types = &ora_types($csr);

ora_autocommit() 函數 :

自動提交模式,在這模式下,每一個事務立即提交,一個顯式提交,使用ora_autocommit()函數可以無需等待可啟用或禁用。

語法:

&ora_autocommit($lda, $on_or_off);

這個函數有兩個參數,從&ora_login()登錄標識符和true/false值,該值指示是否要啟用自動提交(不為零)或禁止(0),默認情況下,關閉自動提交。

ora_commit, ora_rollback 函數:

一個數據庫的修改可能會被提交或回滾可使用&ora_commit()和&ora_rollback()函數。這些函數接受一個參數,登錄標識符從&ora_login()獲得。

語法:

&ora_commit($lda);
&ora_rollback($lda);

ora_version() 函數:

&ora_version()函數輸出Oraperl 的版本號和版權信息。它也打印了的各種編譯時間選項的值。

語法:

&ora_version();

此功能相當於Perl的-v標誌。

Oraperl 變量:

提供了6個特殊變量,$ora_cache, $ora_long, $ora_trunc, $ora_errno, $ora_errstr 和 $ora_verno.

  • $ora_cache: &ora_cache變量決定了默認的緩存大小,使用ora_open()函數的SELECT語句如果還冇有給出顯式高速緩存大小.

  • $ora_long: Oraperl查詢的數據庫,以確定每個字段的長度和分配緩衝空間。字段類型不可能為LONG或LONGRAW。根據可能的最大長度(65535字節)分配空間的內存顯然是極大的浪費。因此,當與ora_open()確定一個字段是LONG類型,它分配表示由$ ora_long變量所占的空間。

  • $ora_trunc: 由於Oraperl不能確切地確定一個LONG字段的最大長度, 它是可能的長度表示的$ ora_long不足以存儲取出的數據。在這樣的情況下,可選的第二個參數&ora_fetch()表示截斷是否應該被允許還是應該挑起一個錯誤。

    如果第二個參數冇有指定,這個值的$ ora_trunc是作為默認值。這僅適用於LONG和LONGRAW數據類型。

  • $ora_errno : 包含Oracle錯誤代碼所引發的最後一個函數調用。

  • $ora_errstr: 包含$ ora_errno的當前值對應的Oracle錯誤消息。

  • $ora_verno: 包含版本號Oraperl的形式v.ppp其中v是主版本號和PPP是的patchlevel。