如何从.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会执行该过程的内容。
我想创建所有程序,阅读我制作的文件,任何想法?。
答案 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;
/