PostgreSQL 删除程序
在本教程中,您将学习如何使用 PostgreSQL drop procedure 语句删除过程。
摘要:在本教程中,您将学习如何使用 PostgreSQL drop procedure 语句删除过程。
PostgreSQL Drop Procedure 语句介绍
该 drop procedure 语句删除一个存储过程。下面说明了该 drop procedure 语句的语法:
drop procedure [if exists] procedure_name (argument_list)
[cascade | restrict]
在这个语法中:
- 首先,
procedure_name在drop procedure关键字后指定要删除的存储过程的名称 ( ) 。 - 其次,
if exists如果您希望 PostgreSQL 在删除不存在的存储过程时发出通知而不是错误,请使用该选项。 - 第三,如果存储过程的名称在数据库中不是唯一的,则指定存储过程的参数列表。请注意,具有不同参数列表的存储过程可以共享相同的名称。PostgreSQL 需要参数列表来确定要删除哪个存储过程。
- 最后,使用该
cascade选项删除存储过程及其依赖对象以及依赖于这些对象的对象等。默认选项是restrict将拒绝删除存储过程,以防它有任何依赖对象。
要删除多个存储过程,请在 drop procedure 关键字后指定存储过程名称的逗号列表,如下所示:
drop procedure [if exists] name1, name2, ...;
创建示例存储过程
让我们创建几个管理参与者的存储过程,以便您可以学习如何删除它们:

以下 insert_actor() 存储过程将新行插入到 actor 表中。它接受两个参数,即演员的名字和姓氏。
create or replace procedure insert_actor(
fname varchar,
lname varchar)
language plpgsql
as $$ begin
insert into actor(first_name, last_name)
values('John','Doe');
end;
$$;
以下 insert_actor 存储过程还将向 actor 表中插入一行。但是,它接受一个参数,即演员的全名。在 insert_actor() 使用 split_part() 功能将它们插入之前的全名分成名字和姓氏 actor 表。
create or replace procedure insert_actor(
full_name varchar
)
language plpgsql
as $$ declare
fname varchar;
lname varchar;
begin
-- split the fullname into first & last name
select
split_part(full_name,' ', 1),
split_part(full_name,' ', 2)
into fname,
lname;
-- insert first & last name into the actor table
insert into actor(first_name, last_name)
values('John','Doe');
end;
$$;
以下存储过程按 id删除一个参与者:
create or replace procedure delete_actor(
p_actor_id int
)
language plpgsql
as $$ begin
delete from actor
where actor_id = p_actor_id;
end;
$$;
以下存储过程更新演员的名字和姓氏:
create or replace procedure update_actor(
p_actor_id int,
fname varchar,
lname varchar
)
language plpgsql
as $$ begin
update actor
set first_name = fname,
last_name = lname
where actor_id = p_actor_id;
end;
$$;
PostgreSQL 删除过程示例
首先,尝试删除 insert_actor 存储过程:
drop procedure insert_actor;
PostgreSQL 发出以下错误:
ERROR: procedure name "insert_actor" is not unique
HINT: Specify the argument list to select the procedure unambiguously.
SQL state: 42725
因为有两个 insert_actor 存储过程,所以需要指定参数列表,以便 PostgreSQL 可以选择正确的存储过程进行删除。
其次,删除 insert_actor(varchar) 接受一个参数的存储过程:
drop procedure insert_actor(varchar);
由于 insert_actor 存储过程现在是唯一的,您可以在不指定参数列表的情况下删除它:
drop procedure insert_actor;
它与以下内容相同:
drop procedure insert_actor(varchar,varchar);
第三,使用一条 drop procedure 语句删除两个存储过程:
drop procedure
delete_actor,
update_actor;
概括
- 使用该
drop procedure语句删除存储过程。 - 在
drop procedure关键字后指定逗号分隔的存储过程名称列表以删除多个存储过程。 - 如果存储过程名称不唯一,请使用参数列表指定要删除的存储过程。