↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.0 / 6.5
历史版本。 PostgreSQL 7.0 已结束支持。 请参阅 当前版本手册.

12.3. 使用 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';
    

元组以哈希的引用形式传递。键是元组中字段的名字。值是元组中对应字段的值。

新函数 empcomp 可以这样使用:

SELECT name, empcomp(employee) from employee;
    

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.