2

我正在使用 oracle 11g 。我正在尝试使用命令在包内运行一个过程

execute package.procedure 

但我不断收到异常

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

我创建的包和包体如下。我实际上在这里要做的是创建一个包,该包用于在每次执行时创建表。所以我写了下面的脚本。

- - -包裹

create or replace package pack1 as
end pack1 ;
/

------包体

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;
/

但是当我跑的时候

execute pack1.proc2 ;

它给了我上述例外。

有人可以帮我解决什么问题吗?

提前致谢

4

1 回答 1

5

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

create or replace package pack1 as
procedure proc1;
procedure proc2;
end pack1;
/

不过,动态创建表听起来不是一个好主意。

于 2012-09-24T11:17:43.050 回答