微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.待续

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐