12

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

テーブル名: ジアチ

列:

  • 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 では、赤い下線付きの実行ワードが表示されます。

この手順をテストしたところ、うまく機能しました。

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

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

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

4

2 に答える 2

12

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

SQL> some_proc() を実行
BEGIN some_proc(); 終わり;

      *
1 行目のエラー:
ORA-06550: 行 1、列 7:
PLS-00201: 識別子'SOME_PROC'を宣言する必要があります
ORA-06550: 行 1、列 7:
PL/SQL: ステートメントは無視されました
于 2011-03-05T13:49:55.997 に答える
11

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

execute ziaci_proc('X','Y',1);
于 2011-03-05T11:18:06.040 に答える