web-dev-qa-db-ja.com

PL / SQLDeveloperでのプロシージャの実行に関する問題

私はこれがプロシージャを作成して実行する最初の試みです。まず、簡単なテーブルを作成します。テーブルのDBスキームはここにあります:

テーブル名:Ziaci

列:

  • ZiakId-主キー、番号
  • 姓、varchar2
  • FirstName、varchar2
  • TriedaId-キー、番号を偽造

ストアドプロシージャはテーブルにデータを挿入するだけです。次のSQLコマンドを使用してストアドプロシージャを作成しました。

create procedure ziaci_proc(surname_in in varchar2, 
firstname_in in varchar2, triedaid_in in number)
is
begin
  insert into ziaci (surname, firstname,triedaid) values (surname_in,firstname_in,triedaid_in);
  end;

そして、私はこの手順を次のように呼んでみます:

execute ziaci_proc('X','Y',1)

このエラーが発生します:

ORA-00900無効なSQL文

PL/SQL Developer IDEは、Wordの実行に赤い下線が引かれています。

私はこの手順をテストし、それはうまくいきます。

この手順は、次のSQLコマンドでのみ実行できます。

begin
ziaci_proc('A','B',2);
end;

何が悪いのか、助けてくれてありがとう。

11
user572844

上記のようにexecuteを使用してストアドプロシージャを呼び出すことは、SQL * Plusに固有です。実際、SQL * Plusはexecute some_proc()BEGIN some_proc(); END;に変換します。存在しないプロシージャを呼び出そうとすると、これを自分で確認できます。

 SQL> some_proc()
 BEGIN some_proc();を実行します。 END; 
 
 * 
 1行目のエラー:
 ORA-06550:1行目、7列目:
 PLS-00201:識別子 'SOME_PROC '宣言する必要があります
 ORA-06550:行1、列7:
 PL/SQL:ステートメントは無視されます
11
Luke Woodward

「SQLウィンドウ」でコマンドを書いていると思います。この行を正常に実行するには、「コマンドウィンドウ」を使用する必要があります。

execute ziaci_proc('X','Y',1);
11
javanna