Postgresql 从小白到高手 八:PL/pgSQL--SQL过程语言

Postgresql 从小白到高手 八 – PL/pgSQL 存储过程

第八章:PL/pgSQL 存储过程


`


一、过程语言

PostgreSQL允许使用除了 SQL 和 C 之外的其他语言编写用户定义的函数。这些其他的语言通常被称作过程语言(PL)。
四种过程语言可用: PL/pgSQL、 PL/Tcl、 PL/Perl 以及 PL/Python。
PL/pgsql 是内置安装的,其他过程语言需要扩展安装。


二 、PL/pgSQL 函数

1.PL/pgSQL语言结构

[ <<label>> ]
[ DECLARE
    declarations ]
BEGIN
    statements
END [ label ];

同级语句,缩进格数一致。执行顺序从上到下,从同级别到下级,从左到右。

2.创建

关键方法词:

2.1 DECLARE : 申明变量

一个变量声明的一般语法是:

name [ CONSTANT ] type [ COLLATE collation_name ] [ NOT NULL ] [ { DEFAULT | := | = } expression ];

如果给定DEFAULT子句,它会指定进入该块时分 配给该变量的初始值。如果没有给出DEFAULT子句, 则该变量被初始化为SQL空值。 CONSTANT选项阻止该变量在初始化之后被赋值, 这样它的值在块的持续期内保持不变。COLLATE 选项指定用于该变量的一个排序规则。如果指 定了NOT NULL,对该变量赋值为空值会导致一个 运行时错误。所有被声明为NOT NULL的变量必须 被指定一个非空默认值。 等号(=)可以被用来代替 PL/SQL-兼容的 :=。

DECLARE   pdid integer := 30;	

申明函数变量:
传递给函数的参数被命名为标识符$1、 2 等等。可选地,能够为 2等等。可选地,能够为 2等等。可选地,能够为n参数名声明别名来增加可读性。不管是别名还是数字标识符都能用来引用参数值。

CREATE FUNCTION sales_tax(real) RETURNS real AS $$
DECLARE
    subtotal ALIAS FOR $1;
BEGIN
    RETURN subtotal * 0.06;
END;
$$ LANGUAGE plpgsql;

2.2 RETURNS 输出

输出变量 :RETURNS text

RETURNS TABLE :输出记录

CREATE FUNCTION extended_sales(p_itemno int)
RETURNS TABLE(quantity int, total numeric) AS $$
BEGIN
    RETURN QUERY SELECT s.quantity, s.quantity * s.price FROM sales AS s
                 WHERE s.itemno = p_itemno;
END;
$$ LANGUAGE plpgsql;

调用带有 OUT 参数的函数, 在函数调用中省略输出参数:

CREATE FUNCTION sales_tax(subtotal real, OUT tax real) AS $$
BEGIN
    tax := subtotal * 0.06;
END;
$$ LANGUAGE plpgsql;

调用存储过程出参可定义为null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值