首页 > 解决方案 > oracle函数,过程和PostgreSQL函数,存储过程之间的区别?

问题描述

谁能告诉我oracle函数,过程和PostgreSQL函数,存储过程之间的区别?

标签: oraclepostgresqlfunctionstored-procedures

解决方案


这个问题太宽泛了,但我将尝试列举一些主要区别:

  • 它们是用不同的语言编写的。Oracle 有 PL/SQL 和 Java,而使用 PostgreSQL,您几乎可以使用任何您想要的语言。

    PostgreSQL 的 PL/pgSQL 是 PL/SQL 的克隆,但有显着差异。

  • CREATE FUNCTIONand语句的语法CREATE PROCEDURE完全不同:

    • PostgreSQL 将代码作为字符串文字,Oracle 没有。

    • 声明函数结果的语法有很大不同。

    • 两个系统都设置了返回函数(Orable 称它们为“流水线”),但语法不同。

  • Oracle 在其数据字典中有大量库,这使得升级很痛苦,但对于编写函数非常有用。PostgreSQL 几乎没有,您通常编写 Perl 或 Python 函数来与系统交互。

  • 对过程的支持只是最近才添加到 PostgreSQL (v11) 中,因此它们的功能还不完整。

  • 您不能在 PostgreSQL 函数中进行事务管理,也不能拥有 Oracle 所说的“自治事务”

    您可以在一定程度上解决其中的一些限制,但不一样。

  • Oracle 函数默认在所有者的用户上下文中执行,而在 PostgreSQL 中默认是在调用者的用户上下文中运行它们。


推荐阅读