↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.0 / 6.5
历史版本PostgreSQL 7.0 已于 2005 年 5 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

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;
    

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。