2

私はオラクル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 に答える