如何在包体中运行过程

Sam*_*Sam 2 oracle procedure package

我正在使用oracle 11g.我试图使用该命令在包内运行一个过程

execute package.procedure 
Run Code Online (Sandbox Code Playgroud)

但我一直得到例外

ERROR at line 1:
ORA-06550: line 1, column 12:
PLS-00302: component 'package' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Run Code Online (Sandbox Code Playgroud)

我创建的包和包体如下.我在这里尝试做的是创建一个包,用于每次执行时创建表.所以我写了下面的脚本.

- - -包

create or replace package pack1 as
end pack1 ;
/
Run Code Online (Sandbox Code Playgroud)

------包体

create or replace package body pack1 as
procedure proc1
is 
begin
execute immediate 'create table bcd(bc date)';
end ;
procedure proc2
is 
begin
execute immediate 'create table bcde(bc number(12,0)) as select country_id from      countries';
end ;
end pack1;
/
Run Code Online (Sandbox Code Playgroud)

但是当我跑

execute pack1.proc2 ;
Run Code Online (Sandbox Code Playgroud)

它给了我上面的例外.

有人能帮助我解决问题吗?

非常感谢提前

Ale*_*ole 5

默认情况下,程序包中的过程和函数是私有的.要将它们公开,您必须在包规范中声明它们:

create or replace package pack1 as
procedure proc1;
procedure proc2;
end pack1;
/
Run Code Online (Sandbox Code Playgroud)

尽管如此,动态创建表并不是一个好主意.