File I/O: read operation
create or replace
procedure ins_prod
(p_file varchar2) as
v_filehandle utl_file.file_type;
v_data varchar2(50);
v_delimiter1 number;
v_delimiter2 number;
v_prod_id varchar2(3);
v_product varchar2(20);
v_cost number(4,2);
v_vend_id varchar2(3);
begin
v_filehandle :=
utl_file.fopen('/disk1/oracle/utl_files',p_file,'r');
loop
begin
utl_file.get_line(v_filehandle,v_data);
v_delimiter1 :=
instr(v_data,'/',1,1);
v_delimiter2 := instr(v_data,'/',1,2);
v_product
:= substr(v_data,1,v_delimiter1 - 1);
v_cost := substr(v_data,v_delimiter1 +
1,v_delimiter2 - v_delimiter1 - 1);
v_vend_id := substr(v_data,v_delimiter2
+ 1);
select
'P'||to_char(max(to_number(substr(prod_id,2))) + 1)
into v_prod_id from
products;
dbms_output.put_line(v_product||' '||v_cost||' '||v_vend_id);
insert into
products values
(v_prod_id, v_product, v_cost, v_vend_id);
exception
when no_data_found then exit;
end;
end loop;
end;
/