从脚本文件Oracle中读取SQL过程

时间:2013-08-21 17:58:49

标签: oracle stored-procedures

如何从.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会执行该过程的内容。

我想创建所有程序,阅读我制作的文件,任何想法?。

1 个答案:

答案 0 :(得分: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;
 /