PostgreSQL存储过程(函数)

从接触分布式greenplum数据库,然后了解到其内部的原理,再熟悉postgreSQL数据库,然后学习DML,其基本的应用和SQL是一样的,基本语法就参考postgresql手册
postgresql教程可以细细的了解一下;我这里就简单说一下存储过程。
一、首先是存储过程的格式

create [or replace] function function_name(参数逗号隔开) returns 返回值类型 as $body$
declare//声明变量
变量名 变量类型 :=变量值;
例如:name char(20):='su';
begin
/*函数体;包括DML语句;
特别注意:如果有返回值,要省略最后的return语句的话,则在函数体的最后必须是一个select语句且返回类型必须和上面声明的类型一样;
*/
return 变量名//和上面返回的变量一样;
end
$body$
language 'plpgsql';

二、控制语句
1、if 条件(五种形式)
IF … THEN
IF … THEN … ELSE
IF … THEN … ELSE IF
IF … THEN … ELSIF … THEN … ELSE
IF … THEN … ELSEIF … THEN … ELSE(注:ELSEIF 是ELSIF 的别名)
2、循环
使用LOOP,EXIT,CONTINUE,WHILE, 和FOR 语句,可以控制PL/pgSQL 函数重复一系列命令。
1)、LOOP
[ <

4)、WHILE
[ <

5)、FOR(整数变种)
[ <

FOR i IN REVERSE 10..1 LOOP
这里可以放一些表达式
END LOOP;
如果下界大于上界(或者是在 REVERSE 情况下是小于),那么循环体将完全不被执行。而且不会抛出任何错误。

3、异常捕获
EXCEPTION
WHEN 错误码(如:STRING_DATA_RIGHT_TRUNCATION:字串数据右边被截断) THEN
/*后台打印错误信息/
RAISE NOTICE ‘错吴信息’;
三、链接运算符
在postgresql中链接运算符是:||而不是+;
四、代码示例

create or replace function f_test() returns void as $$
declare
  begin
    for i in 1..1000 loop
      execute 'insert into test select generate_series('||(i-1)*40000+1||','||i*40000||'),(random()::float)*'||i*0.0001||',clock_timestamp()';
    end loop;
  end;
$$ language plpgsql;
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值