在 PostgreSQL 中,“存储过程”和其他类型的函数有什么区别?

Eva*_*oll 9 postgresql stored-procedures terminology functions sql-standard

我理解以下之间的区别:

  • 标量函数
  • 集合返回函数 (SRF)
  • 内部功能
  • 窗口函数
  • 各种聚合函数
  • 用户实现的函数(在 PostgreSQL 中可以用任何语言实现)
  • 等等。

在 SQL Server 中,“存储过程”允许通过EXEC. 与使用SELECT该返回执行的任何其他函数相比,它提供了什么NULL

当 PostgreSQL 获得存储过程时,它们会给我带来什么,规范中函数和存储过程之间的正式区别是什么?

我读过这个问题,但它似乎早于宣布实施

Erw*_*ter 15

由于 Postgres函数( CREATE FUNCTION)在(单个)事务上下文中运行,因此无法在函数体内执行几个重要命令。喜欢CREATE DATABASECREATE INDEX CONCURRENTLYVACUUM手册:

VACUUM 不能在事务块内执行。

函数通常被称为“存储过程”,这一直是一个误导性的术语 - 可能是从其他 RDBMS 继承而来的。随着SQL 过程( CREATE PROCEDURE) 在 Postgres 11 中的出现,应该完全避免用词不当。

SQL 过程可以开始和结束事务。但是上面提到的命令根本不允许在任何事务块中,所以那些也不能包含在 SQL 过程中,(还)。

为未来计划了多个结果集,但尚未实施。

有关的:


jja*_*nes 6

PostgreSQL 函数不能开始或结束事务。他们坚持从调用查询中继承的任何事务。

当 PostgreSQL 获得存储过程时,它们将能够打开和关闭事务。

也可以看看,