刪除函數。

語法

DROP FUNCTION [ IF EXISTS ] name
  [ ([ [ argmode ] [ argname ] argtype ] [, ...]) ]
  [ CASCADE | RESTRICT ]

說明

DROP FUNCTION 可刪除現有函數的定義。要執行此命令,您必須是超級用戶或者是函數的所有者。如果這是重載函數,則必須指定函數的所有輸入(ININ OUT)參數的數據類型。(該要求與 Oracle 數據庫不兼容。在 Oracle 中,僅指定函數名稱。PolarDB PostgreSQL版(兼容Oracle)允許重載函數名稱,因此在PolarDB PostgreSQL版(兼容Oracle)中,重載函數的 DROP FUNCTION 命令需要使用輸入參數數據類型給定的函數簽名。)

使用 IFEXISTSCASCADERESTRICT 與 Oracle 數據庫不兼容,僅由PolarDB PostgreSQL版(兼容Oracle)使用。

參數

參數說明
IF EXISTS如果函數不存在,將不引發錯誤。在這種情況下,會發出通知。
name現有函數的名稱(可能是 schema 限定的)。
argmode參數的模式:ININOUTOUT。如果省略,則默認值為 IN。請注意,DROP FUNCTION 實際上并不受 OUT 參數影響,因為只需要輸入參數即可確定函數的身份。因此,僅列出 ININOUT 參數即可。(指定 argmode 與 Oracle 數據庫不兼容,它僅適用于PolarDB PostgreSQL版(兼容Oracle)。)
argname參數的名稱。請注意,DROP FUNCTION 實際上并不受參數名稱影響,因為只需要參數數據類型即可確定函數的身份。(指定 argname 與 Oracle 數據庫不兼容,它僅適用于PolarDB PostgreSQL版(兼容Oracle)。)
argtype函數參數的數據類型。(指定 argtype 與 Oracle 數據庫不兼容,它僅適用于PolarDB PostgreSQL版(兼容Oracle)。)
CASCADE自動刪除依賴于函數的對象(如運算符或觸發器),并就此刪除依賴于這些對象的所有對象。
RESTRICT如果存在依賴于函數的對象,則拒絕刪除函數。這是默認值。

示例

以下命令會刪除 emp_comp 函數。

DROP FUNCTION emp_comp(NUMBER, NUMBER);