开发者社区> 问答> 正文

Postgresql存储过程的问题

在POSTGRESQL中写存储过程,感觉几个问题
1)定义类型
不能像ORACLE那样,直接就可以在存储过程中定义,非要预先在存储过程外定义好类型,才能使用,比较麻烦,缺乏灵活性,因为很多类型,只是临时性使用,或者只在本过程中用。
2)表类型
在ORACLE中有个TABLE类型,非常好用,可以把数据检索出来,放在这个类型里处理,但POSTGRESQL中无此类型,目前还不知道有何方法,跟ORACLE表类型类似
3)批处理
在ORACLE中,有个BULK COLLECT ,可以批量检索数据,检索磁盘IO次数,可以大幅度提高效率,
但POSTGRESQL中,还没有类似功能 ,虽然POSTGRESQL可以使用FETCH 100 FROM CURSOR_X 批量列出,但没办法返回到一个集合变量里,比如在存储过程中,FETCH INTO 只能返回一条结果到变量,处理大量数据时,效率会比较低。
4)判断表是否存在,
例如没有CREATE TABLE XXXX IF NOT EXIST TABLE这样的语句,导致在存储过程中需要建立临时表时候,
可能重复建立,导致出错。
这几个功能很重要,不知道POSTGRESQL为何不实现???。

展开
收起
落地花开啦 2016-02-20 15:59:01 4319 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    1) postgresql支持存储过程里面定义类型或变量,以及初始化值和动态执行等高级特性
    2)postgresql也有type类型,create type type_name(col1,col2)
    3)临时表可以变通
    4)postgresql 9.x版本支持这个语法
    你用的数据库版本是否比较低,所以有些功能没有实现。

    2019-07-17 18:45:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
为什么PostgreSQL是最适合去O的数据库 立即下载
PostgresChina2018_赵振平_PostgreSQL和Greenplum数据库故障排查 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载