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 回答