PostgreSQL 存储过程 笔记

前端之家收集整理的这篇文章主要介绍了PostgreSQL 存储过程 笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. PG中存储过程和函数不分,统一是Function

  2. 返回值必须和出参类型一致

  3. 参数名要避开列名,例如用p_做前缀

  4. 运行中输出可以使用RAISE NOTICE ‘模板’,变量1,变量2...;

4.1 变量会依次替换模板中的’%’,要以分号结尾,且%占位符的数量要和变量的数量完全一致。输出的结果在下方输出窗口的消息中显示

4.2 RAISE是一个函数,NOTICE指的是级别,同样可以换成DEBUG,LOG,INFO,EXCEPTION且函数和级别大小写不敏感。具体某个级别是否输出取决于系统设定,默认情况下输出NOTICE,INFO,EXCEPTION这3个级别。

5. 游标的使用

5.1 定义游标:在DECLARE 和BEGIN中间,以c refcursor的方式来定义。

5.2 打开游标:open c for select xxx from xxx where ...

5.3 获取数据:fetch c into xxx

into 后面可以跟变量名,根据select出来的列来存入,也可以定义一个RECORD类型的变量,直接放 进去,取的时候,直接用[RECORD变量名].[列名]获取对应列的数据。

5.4 循环获取数据,首先fetch一次,然后利用内置变量found循环获取数据

DECLARE
crefcursor;
rRECORD;
BEGIN
opencforselect*fromt_test;
fetchcintor;
WHILEfoundLOOP
RAISENOTICE‘data:%,%,%’,r.column_1,r.column_2,r.column_3;
fetchcintor;--这里一定要再次fetch一下
ENDLOOP;
END;

5.变量名要避开参数名以及列名,例如以v_做前缀

6.待续

猜你在找的Postgre SQL相关文章