GB | BIG5
|
| 首頁 > 數據庫 > 其它 > 正文 |
 |
| PostgreSQL7.0手冊-用戶手冊-12. PL/perl - Perl 過程語言 |
| 編譯:何偉平 laser@zhengmai.com.cn (2001-04-21 21:30:47) |
第十二章. PL/perl - Perl 過程語言
內容
概述
制做和安裝
使用 PL/Perl
本章描述如何編譯,安裝和使用 PL/Perl.
概述
PL/Perl 允許你用 Perl 腳本語言書寫可以用 SQL 查詢的函數,就好象它們是內建在 Postgres 裡一樣.
PL/Perl 解釋器是一個完整的 Perl 解釋器.不過,有些操作出安全性的考慮被屏蔽掉了.
通常,被限制的操作是那些環境交互的動作.包括文件句柄操作,請求和使用(對外部模塊而言).
要知道,安全不是絕對的.實際上,有幾種拒絕服務攻擊仍然是可能的-存儲器耗盡和無限循環就是兩個例子.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
制作和安裝
假設 Postgres 源代碼樹的根是 $PGSRC,那 Pl/perl 源代碼位 $PGSRC/src/pl/plperl.
要制作,只需要按照下面步驟處理:
cd $PGSRC/src/pl/plperl
perl Makefile.PL
make
這樣做將創建共享庫文件.在一個 Linux 系統裡,它將被叫做 plperl.so.在其他系統裡的擴展名可能不同.
然應該把該共享庫拷貝到 postgres 安裝的 lib 子目錄下.
createlang 命令用將該語言安裝到一個數據庫中.如果它被安裝到 template1 裡面,以創建的所有數據庫將自動安裝這個語言.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
使用 PL/Perl
假設你有下面的表:
CREATE TABLE EMPLOYEE (
name text,
basesalary int4,
bonus int4 );
為了獲取所有的薪水(本金+獎勵),我們將定義下面這樣的函數:
CREATE FUNCTION totalcomp(int4, int4) RETURNS int4
AS 'return $_[0] + $_[1]'
LANGUAGE 'plperl';
請注意參數會象想象的那樣以 @_ 形式傳遞給函數.還有,因為 SQL 創建函數的引號規則,你會發現你要比平常更頻繁地使用擴展的引號函數(qq[],q[],qw[]).
我們現在可以象下面這樣使用我們的函數.
SELECT name, totalcomp(basesalary, bonus) from employee
不過,我們還可以把我們的整個記錄傳遞個我們的函數:
CREATE FUNCTION empcomp(employee) returns int4
AS 'my $emp = shift;
return $emp->{'basesalary'} + $emp->{'bonus'};'
LANGUAGE 'plperl';
記錄是作為一個散列(哈希 hash)數組的引用傳遞的.腳標是記錄裡面的字段名稱.值是記錄裡面對應的字段的值.
新函數 empcomp 可以這樣使用:
SELECT name, empcomp(employee) from employee;
--------------------------------------------------------------------------------
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
PostgreSQL7.0手冊-附錄-文檔 (2001-04-21 23:50:44) PostgreSQL7.0手冊-附錄-日期/時間支持-CVS 倉庫 (2001-04-21 23:48:48) PostgreSQL7.0手冊-教程 -73. Postgres SQL 高級特性 (2001-04-21 23:45:36) PostgreSQL7.0手冊-教程 -72. 查詢語言 (2001-04-21 23:44:40) PostgreSQL7.0手冊-教程 -71. 開始 (2001-04-21 23:42:54) PostgreSQL7.0手冊-教程 -70. 體系結構 (2001-04-21 23:41:58) PostgreSQL7.0手冊-教程 -69. SQL (2001-04-21 23:41:23) PostgreSQL7.0手冊-開發者手冊 -68. 分頁文件 (2001-04-21 23:39:22) PostgreSQL7.0手冊-開發者手冊 -67. 端接口 (2001-04-21 23:38:34) PostgreSQL7.0手冊-開發者手冊 -66. gcc 缺省優化 (2001-04-21 23:37:20)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |