0

.sql ファイルからストアド プロシージャを読み取るにはどうすればよいですか? このファイルの内容の例:

create or replace procedure insert(p_t varchar(20), p_e varchar(10), out p_id number)
as begin
insert into instrument(type, status) values (p_t, p_e);
commit;
select max(id) from instrument into p_id;
end /

...other procedures...

コマンド @" filepath "を使用すると、このプロシージャが作成されるようにしたいのですが、そうする代わりに、Oracle がプロシージャの内容を実行します。

私が作成したファイルを読んですべての手順を作成したいと思います。何かアイデアはありますか?

4

1 に答える 1

2

まず、プロシージャを呼び出さないでくださいINSERT。これが実際にコンパイルされたら、私はぞっとします。

第二に、後にセミコロンが欠けているようで、新しい行end;に置く必要があります:/

create or replace procedure insert_instrument (
   p_t varchar(20), p_e varchar(10), out p_id number ) as 

begin
  insert into instrument(type, status) values (p_t, p_e);
  commit;
  select max(id) from instrument into p_id;
end;
 /

RETURNING INTO句を使用すると、これを簡略化できます。余分な SELECT を保存するので、より速く動作します:

create or replace procedure insert_instrument (
   p_t varchar(20), p_e varchar(10), out p_id number ) as 

begin
  insert into instrument(type, status) 
  values (p_t, p_e)
  returning id into p_id;
  commit;
end;
 /
于 2013-08-21T18:06:04.383 に答える