在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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。