如何在 Oracle 中删除多个函数
how to drop multiple functions in Oracle
我想在 Oracle SQL 开发人员中一次从我的数据库中删除多个函数。
有人知道如何为此创建脚本吗?
嗯,你必须知道你想放弃哪些。我在下面脚本的 IN
子句中将它们全部命名。
先测试功能:
SQL> create or replace function f1 return number is begin return 1; end;
2 /
Function created.
SQL> create or replace function f2 return number is begin return 2; end;
2 /
Function created.
它们有效吗?
SQL> select f1, f2 from dual;
F1 F2
---------- ----------
1 2
是的,他们有。
让我们将它们放入脚本中:
SQL> begin
2 for cur_r in (select object_name
3 from user_objects
4 where object_name in ('F1', 'F2')
5 and object_type = 'FUNCTION'
6 )
7 loop
8 execute immediate 'drop function ' || cur_r.object_name;
9 end loop;
10 end;
11 /
PL/SQL procedure successfully completed.
他们现在工作吗?
SQL> select f1, f2 from dual;
select f1, f2 from dual
*
ERROR at line 1:
ORA-00904: "F2": invalid identifier
SQL>
不,因为它们被丢弃了。
好吧,static 选项可以删除函数(有时被认为 更安全 因为您可以仔细检查要删除的内容)包括两个步骤
1 - 运行 以下查询
select 'drop function '||object_name||';' as sql_txt
from user_objects where object_type = 'FUNCTION'
and object_name like 'F%' /* filter the selection here */
order by 1;
SQL_TXT
-----------------
drop function FA;
drop function FB;
drop function FC;
2 - 将结果 drop
语句复制到 SQL 开发人员 window 中并执行它们
我想在 Oracle SQL 开发人员中一次从我的数据库中删除多个函数。 有人知道如何为此创建脚本吗?
嗯,你必须知道你想放弃哪些。我在下面脚本的 IN
子句中将它们全部命名。
先测试功能:
SQL> create or replace function f1 return number is begin return 1; end;
2 /
Function created.
SQL> create or replace function f2 return number is begin return 2; end;
2 /
Function created.
它们有效吗?
SQL> select f1, f2 from dual;
F1 F2
---------- ----------
1 2
是的,他们有。
让我们将它们放入脚本中:
SQL> begin
2 for cur_r in (select object_name
3 from user_objects
4 where object_name in ('F1', 'F2')
5 and object_type = 'FUNCTION'
6 )
7 loop
8 execute immediate 'drop function ' || cur_r.object_name;
9 end loop;
10 end;
11 /
PL/SQL procedure successfully completed.
他们现在工作吗?
SQL> select f1, f2 from dual;
select f1, f2 from dual
*
ERROR at line 1:
ORA-00904: "F2": invalid identifier
SQL>
不,因为它们被丢弃了。
好吧,static 选项可以删除函数(有时被认为 更安全 因为您可以仔细检查要删除的内容)包括两个步骤
1 - 运行 以下查询
select 'drop function '||object_name||';' as sql_txt
from user_objects where object_type = 'FUNCTION'
and object_name like 'F%' /* filter the selection here */
order by 1;
SQL_TXT
-----------------
drop function FA;
drop function FB;
drop function FC;
2 - 将结果 drop
语句复制到 SQL 开发人员 window 中并执行它们