2025年9月25日: PostgreSQL 18 釋出!
支援版本:當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本:devel
不支援版本:12 / 11

36.4. 使用者定義過程 #

過程(Procedure)是一種與函式(Function)相似的資料庫物件。主要區別如下:

  • 過程使用 CREATE PROCEDURE 命令定義,而不是 CREATE FUNCTION

  • 過程不返回函式值;因此 CREATE PROCEDURE 缺少 RETURNS 子句。但是,過程可以透過輸出引數向呼叫者返回資料。而函式不能。

  • 函式作為查詢或 DML 命令的一部分被呼叫,而過程則使用 CALL 命令獨立呼叫。

  • 過程在其執行期間可以提交或回滾事務(然後自動開始一個新事務),前提是呼叫的 CALL 命令不包含在顯式事務塊中。函式則不能這樣做。

  • 某些函式屬性(如 strictness)不適用於過程。這些屬性控制函式如何在查詢中使用,這與過程無關。

後續章節中關於如何定義使用者定義函式的解釋同樣適用於過程,但上面提到的幾點除外。

函式和過程統稱為“例程”(routines)。存在諸如 ALTER ROUTINEDROP ROUTINE 之類的命令,它們可以對函式和過程進行操作,而無需知道它們是哪種型別。請注意,沒有 CREATE ROUTINE 命令。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步說明的地方,請使用此表格報告文件問題。