PostgreSQL 11 新特性之存储过程

文章目录

PostgreSQL 11 增加了一个新的模式对象:存储过程(Stored Procedure)。存储过程和函数(Function)类似,不过它没有返回值。

存储过程最大的优势就是能够支持事务控制,也就是可以在定义中使用 COMMIT 或者 ROLLBACK 语句。

使用 CREATE\ALTER\DROP PROCEDURE 命令创建\修改\删除存储过程,使用 CALL 命令调用存储过程。支持存储过程的服务器端编程语言包括:PL/pgSQL、PL/Perl、PL/Python、PL/Tcl 以及 SPI 。

先来看一个简单示例:

CREATE TABLE tbl(id int, name text);

CREATE PROCEDURE proc1(pid integer, pname text)
LANGUAGE sql
AS $$
INSERT INTO tbl(id, name) VALUES (pid, pname);
$$;

   

使用 CALL 语句调用存储过程:

CALL proc1(1, 'the first value');
CALL proc1(pname=>'the second value', pid=>2);

    
查看一下结果:

SELECT * FROM tbl;
 id |       name       
----+------------------
  1 | the first value
  2 | the second value
(2 rows)


存储过程增加了对事务的支持:

CREATE OR REPLACE PROCEDURE proc2()
 LANGUAGE plpgsql
AS $$
BEGIN
 FOR i IN 0..9 LOOP
  INSERT INTO tbl(id, name) VALUES (i, 'value: '|| i);
  IF i % 2 = 0 THEN
   COMMIT;
  ELSE
   ROLLBACK;
  END IF;
 END LOOP;
END;
$$ ;

   
    
调用存储过程 proc2,即使没有参数,仍然需要加上括号(()):

CALL proc2();

   
查看结果:
 

更多请见:http://www.mark-to-win.com/tutorial/51625.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值