Postgresql
在 PostgreSQL 中,“儲存過程”和其他類型的函式有什麼區別?
我理解以下之間的區別:
- 標量函式
- 設置返回函式 (SRF)
- 內部功能
- 視窗函式
- 各種聚合函式
- 使用者實現的函式(在 PostgreSQL 中可以用任何語言實現)
- 等等。
在 SQL Server 中,“儲存過程”允許通過
EXEC
.SELECT
與使用return執行的任何其他函式相比,它提供了什麼NULL
?當 PostgreSQL 獲得儲存過程時,它們會給我帶來什麼,以及規範中函式和儲存過程之間的正式區別是什麼?
由於 Postgres函式(
CREATE FUNCTION
)僅在(單個)事務上下文中執行,因此無法在函式體內執行幾個重要的命令。喜歡CREATE DATABASE
或CREATE INDEX CONCURRENTLY
或VACUUM
。手冊:
VACUUM
不能在事務塊內執行。函式通常被稱為“儲存過程”,這一直是一個誤導性的術語——可能是從其他 RDBMS 繼承而來的。隨著SQL 過程(
CREATE PROCEDURE
) 在 Postgres 11 中的到來,應該完全避免用詞不當。SQL 過程可以開始和結束事務。但是上面提到的命令根本不允許在任何事務塊中使用,因此這些命令也不能包含在 SQL 過程中(目前)。
為未來計劃了多個結果集,但尚未實施。
有關的: