[英]Semantics of Oracle stored procedures / functions in a transactional context
[英]Difference between oracle function,procedures and PostgreSQL functions,Stored Procedures?
谁能告诉我 oracle function,过程和 PostgreSQL 函数,存储过程之间的区别?
这个问题太宽泛了,但我将尝试列举一些主要区别:
它们是用不同的语言编写的。 Oracle 具有 PL/SQL 和 Java,而使用 PostgreSQL,您几乎可以使用任何您想要的语言。
PostgreSQL 的 PL/pgSQL 是 PL/SQL 的克隆,但有显着差异。
CREATE FUNCTION
和CREATE PROCEDURE
语句的语法完全不同:
PostgreSQL 将代码作为字符串文字,Oracle 没有。
声明 function 结果的语法有很大不同。
两个系统都设置了返回函数(Orable 称它们为“流水线”),但语法不同。
Oracle 的数据字典中有大量的库,这使得升级很痛苦,但对于编写函数非常有用。 PostgreSQL 几乎没有,您通常编写 Perl 或 Python 函数来与系统交互。
对程序的支持最近才添加到 PostgreSQL (v11) 中,因此它们的功能还不完整。
您不能在 PostgreSQL 函数中进行事务管理,也不能拥有 Oracle 所谓的“自主事务”
您可以在一定程度上解决其中的一些限制,但不一样。
Oracle 函数默认在所有者的用户上下文中执行,而在 PostgreSQL 中默认是在调用者的用户上下文中运行它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.