在PostgreSQL中,Drop函數語句用於刪除函數。
用法: drop function [if exists] function_name(argument_list) [cascade | restrict]
讓我們分析以上語法:
- 首先,指定要刪除的函數的名稱下降函數關鍵字。
- 其次,使用如果存在如果您要指示PostgreSQL在函數不存在的情況下發出通知而不是錯誤,則選擇該選項。
- 第三,指定函數的參數列表。由於函數可以重載,PostgreSQL需要通過檢查參數列表來知道要刪除的函數。如果函數在架構中是唯一的,則無需指定參數列表。
當函數具有任何依賴對象(例如運算符或觸發器)時,您不能刪除該函數。要刪除函數及其從屬對象,您需要指定級聯選項。帶層疊選項的drop函數將遞歸刪除函數,其依賴對象以及依賴於那些對象的對象,依此類推。
默認情況下,drop函數語句使用限製選項,該選項在函數具有任何依賴對象時拒絕刪除函數。要使用單個drop function語句刪除多個函數,請在drop function關鍵字之後指定一個以逗號分隔的函數名稱列表,如下所示:
drop function [if exists] function1, function2, ...;
為了舉例說明,我們將使用示例數據庫dvdrental。
例:
以下語句使用create function語句定義一個函數,該函數返回一組電影,包括film_id,標題和演員:
create or replace function get_film_actors() returns setof record as $$ declare rec record; begin for rec in select film_id, title, (first_name || ' ' || last_name)::varchar from film inner join film_actor using(film_id) inner join actor using (actor_id) order by title loop return next rec; end loop; return; end; $$ language plpgsql;
以下語句定義了一個具有相同名稱的函數 get_film_actors。但是,它接受電影ID作為參數:
create or replace function get_film_actors(p_fiml_id int) returns setof record as $$ declare rec record; begin for rec in select film_id, title, (first_name || ' ' || last_name)::varchar from film inner join film_actor using(film_id) inner join actor using (actor_id) where film_id = p_fiml_id order by title loop return next rec; end loop; return; end; $$ language plpgsql;
以下語句試圖刪除get_film_actors函數:
drop function get_film_actors;
輸出:
由於get_film_actors存儲過程不是唯一的,因此您需要指定要刪除的函數。
以下語句刪除具有零參數的get_film_actors函數:
drop function get_film_actors();
現在隻有一個get_film_actors剩下的函數。由於它在數據庫中是唯一的,因此可以在不指定其參數列表的情況下將其刪除,如下所示:
drop function get_film_actors;
或者,如果您想指定確切的函數,則可以使用以下語句:
drop function get_film_actors(int);
結論:
- 使用放下函數語句刪除函數。
- 如果函數重載,請在函數中指定參數列表。
- 使用下降函數聲明與級聯刪除函數及其依賴對象和依賴於那些對象的對象的選項,依此類推。
相關用法
- PostgreSQL DROP DATABASE用法及代碼示例
- PostgreSQL DROP COLUMN用法及代碼示例
- PostgreSQL DROP TABLE用法及代碼示例
- PostgreSQL DROP SCHEMA用法及代碼示例
- PostgreSQL DROP TRIGGER用法及代碼示例
- PostgreSQL DROP INDEX用法及代碼示例
- PostgreSQL DROP ROLE用法及代碼示例
- PostgreSQL DROP TABLESPACE用法及代碼示例
- PostgreSQL ARRAY_AGG()用法及代碼示例
- PostgreSQL AVG()用法及代碼示例
- PostgreSQL COUNT()用法及代碼示例
- PostgreSQL STRING_AGG()用法及代碼示例
- PostgreSQL MAX()用法及代碼示例
- PostgreSQL MIN()用法及代碼示例
- PostgreSQL SUM()用法及代碼示例
- PostgreSQL DENSE_RANK用法及代碼示例
- PostgreSQL NULLIF()用法及代碼示例
注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – Drop Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。