【发布时间】:2019-10-09 05:37:11
【问题描述】:
谁能告诉我oracle函数、过程和PostgreSQL函数、存储过程的区别?
【问题讨论】:
标签: oracle postgresql function stored-procedures
谁能告诉我oracle函数、过程和PostgreSQL函数、存储过程的区别?
【问题讨论】:
标签: oracle postgresql function stored-procedures
这个问题太宽泛了,但我会尝试列举一些主要区别:
它们是用不同的语言编写的。 Oracle 有 PL/SQL 和 Java,而使用 PostgreSQL,您几乎可以使用任何您想要的语言。
PostgreSQL 的 PL/pgSQL 是 PL/SQL 的克隆,但有显着差异。
CREATE FUNCTION 和 CREATE PROCEDURE 语句的语法完全不同:
PostgreSQL 将代码作为字符串文字,Oracle 没有。
声明函数结果的语法有很大不同。
两个系统都设置了返回函数(Orable 称它们为“流水线”),但语法不同。
Oracle 在其数据字典中有大量库,这使得升级很痛苦,但对于编写函数非常有用。 PostgreSQL 几乎没有这些,您通常编写 Perl 或 Python 函数来与系统交互。
最近才向 PostgreSQL (v11) 添加了对过程的支持,因此它们的功能还不完整。
不能在 PostgreSQL 函数中进行事务管理,也不能拥有 Oracle 所说的“自治事务”
您可以在一定程度上绕过这些限制,但不一样。
Oracle 函数默认在所有者的用户上下文中执行,而在 PostgreSQL 中默认是在调用者的用户上下文中运行它们。
【讨论】: