DROP FUNCTION

DROP FUNCTION — 移除一個函數

語法

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

說明

DROP FUNCTION 移除現有函數的定義。要執行此命令,使用者必須是該函數的擁有者。必須指定該函數的參數類型,因為可能存在多個具有相同名稱和不同參數列表的不同函數。

參數

IF EXISTS

如果函數不存在,不要拋出錯誤。在這種情況下發布 NOTICE。

name

現有函數的名稱(可以加上綱要)。如果未指定參數列表,則該名稱在其綱要中必須是唯一的。

argmode

參數的模式:IN、OUT、INOUT 或 VARIADIC。如果省略,則預設為 IN。請注意,DROP FUNCTION 實際上並不關注 OUT 參數,因為只需要輸入參數來確定函數的身份。所以列出 IN、INOUT 和 VARIADIC 參數就足夠了。

argname

參數的名稱。 請注意,DROP FUNCTION 實際上並不關注參數名稱,因為只需要參數資料型別來確定函數的身份。

argtype

如果有的話,函數參數的資料型別(可加上綱要)。

CASCADE

自動刪除依賴於該功能的物件(如運算子或觸發器),並依次移除依賴於這些物件的所有物件(請參閱第 5.13 節)。

RESTRICT

如果任何物件依賴於它,拒絕移除該函數。這是預設的做法。

範例

此指令移除平方根函數:

DROP FUNCTION sqrt(integer);

在一個指令中刪除多個函數:

DROP FUNCTION sqrt(integer), sqrt(bigint);

如果函數名稱在其綱要中是唯一的,則可以在不帶參數列表的情況下引用它:

DROP FUNCTION update_employee_salaries;

請注意,這不同於

DROP FUNCTION update_employee_salaries();

它指的是一個零個參數的函數,而第一個變形可以引用具有任意數量參數的函數,包括零個,只要該名稱是唯一的。

相容性

這個指令符合 SQL 標準,並帶有這些 PostgreSQL 的延伸功能:

  • 原標準只允許每個指令刪除一個函數。

  • 具有 IF EXISTS 選項

  • 能夠指定參數模式和名稱

參閱

CREATE FUNCTION, ALTER FUNCTION