DROP ROUTINE — 移除例程
DROP ROUTINE [ IF EXISTS ]name[ ( [ [argmode] [argname]argtype[, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ]
DROP ROUTINE 移除一個或多個現有例程的定義。“例程”一詞包括聚合函式、普通函式和過程。有關引數的描述、更多示例和詳細資訊,請參見 DROP AGGREGATE、DROP FUNCTION 和 DROP PROCEDURE。
DROP ROUTINE 使用的查詢規則與 DROP PROCEDURE 的查詢規則基本相同;特別是,DROP ROUTINE 與該命令一樣,會考慮一個沒有 argmode 標記的引數列表,並可能使用 SQL 標準的定義,即 OUT 引數包含在列表中。(DROP AGGREGATE 和 DROP FUNCTION 不這樣做。)
在某些情況下,當不同型別的例程共享相同的名稱時,DROP ROUTINE 可能會因歧義錯誤而失敗,而更具體的命令(如 DROP FUNCTION 等)則可以成功。更仔細地指定引數型別列表也可以解決此類問題。
這些查詢規則也用於操作現有例程的其他命令,例如 ALTER ROUTINE 和 COMMENT ON ROUTINE。
刪除型別為 integer 的例程 foo
DROP ROUTINE foo(integer);
無論 foo 是聚合、函式還是過程,此命令都將起作用。
此命令符合 SQL 標準,並帶有以下 PostgreSQL 擴充套件
標準只允許每個命令刪除一個例程。
IF EXISTS 選項是一個擴充套件。
指定引數模式和名稱的能力是一個擴充套件,並且當給出模式時,查詢規則有所不同。
使用者定義的聚合函式是一個擴充套件。
如果您在文件中發現任何不正確、與您實際使用的功能不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。