Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从脚本文件读取SQL过程,Oracle_Oracle_Stored Procedures - Fatal编程技术网

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

从脚本文件读取SQL过程,Oracle,oracle,stored-procedures,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 proced

如何从.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并没有这样做,而是执行过程的内容


我想创建我所有的程序来阅读我制作的文件,有什么想法吗?

首先,请不要调用您的程序
INSERT
。如果这真的被编译了,我会很震惊

其次,您似乎在
结束后缺少一个分号并且您需要将
/
放在新行上:

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;
 /
你可以使用这个子句来简化这个过程;它节省了额外的选择,因此操作更快:

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;
 /

您是在使用SQL*Plus还是其他工具?非常感谢,过程名称只是一个输入错误:D我已经修复了它,但非常感谢您的“返回”建议。希望澄清您是否打算使用“将id返回p_id”