我正在使用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 ;
它给了我以上例外。
有人可以帮我解决问题吗?
提前感谢
答案 0 :(得分:5)
默认情况下,包中的过程和函数是私有的。 To make them public you have to declare them in the package specification:
create or replace package pack1 as
procedure proc1;
procedure proc2;
end pack1;
/
动态创建表并不是一个好主意。