2

クライアントリスを使用してOracle 11gで簡単な手順を作成します。これはコードです

create or replace procedure EXAMPLE_P is
begin
    1+2;
end;/

実行中にこの警告が表示されました

Warning:   Warning: execution completed with warning
SQLState:  99999
ErrorCode: 17110
Position: 0

Query 1 of 1, Rows read: 0, Elapsed time (seconds) - Total: 0.031, SQL query: 0.031, Building output: 0

ここでの問題は、プロシージャを呼び出すことができません。

begin
    EXAMPLE_P();
end;/

上記のブロックを実行すると、このエラーが発生しました。

Error: ORA-06550: line 2, column 9:
PLS-00302: component 'EXAMPLE_P' must be declared
ORA-06550: line 2, column 2:
PL/SQL: Statement ignored

SQLState:  65000
ErrorCode: 6550
Position: 37

プロシージャは、テーブル ALL_OBJECTS にステータス INVALID で存在します。コンパイルしようとしました(ステータスを検証します)が、以下のクエリでは機能しません

alter procedure EXAMPLE_P COMPILE;

SomeOne は、自分のプロシージャを呼び出すために何ができるかを知っています (私は PL/SQL 開発者を使用しましたが、この問題に遭遇したことはありません)。

4

1 に答える 1

3

作成していないため、プロシージャを呼び出すことはできません。の割り当てターゲットがなかったため、作成されませんでした1 + 2。これを入れるには変数を宣言する必要があります。また/、間違った場所にあります。

これら 2 つの違いを比較します。

SQL> create or replace procedure EXAMPLE_P is
  2  begin
  3      1+2;
  4  end;/
  5  /

Warning: Procedure created with compilation errors.

SQL> create or replace procedure EXAMPLE_P is
  2    i number; -- Declare a variable
  3  begin
  4      i := 1 + 2; -- assign something to the variable.
  5  end;
  6  /

Procedure created.

あなたはそれを間違って呼んでいます。パラメータがない場合は、().

SQL> begin
  2     example_p;
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL>

PL/SQL 開発者でプロシージャを作成しようとしましたが、次のエラーが発生しました。だから、あなたが問題を抱えたことがないことに少し驚いています。

PROCEDURE ALERT.EXAMPLE_P のコンパイル エラー

エラー: PLS-00103: 次のいずれかを期待しているときに、記号「1」が見つかりました:

   ( begin case declare exit for goto if loop mod null pragma
   raise return select update while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   continue close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge pipe purge
The symbol "return" was substituted for "1" to continue. Line: 3 Text: 1 + 2;
于 2012-10-05T15:40:54.943 に答える