Oracle

カーソル for loop

https://chiritsumon.net/lab/archives/553

create tablespace testtbs datafile ‘C:\oracle\oradata\db19\testtbs.dbf’ size 1G autoextend on;
create user testuser identified by testuser default tablespace testtbs;
grant dba to testuser;
conn testuser/testuser
create table test(data blob) lob(data) store as securefile(tablespace testtbs);
create or replace directory d1 as ‘C:\Users\Administrator’;

declare
v_dest_lob blob;
v_file_loc bfile := bfilename(‘D1′,’lob.bmp’);
v_amount number;
v_dst_offset number;
v_src_offset number;
begin
dbms_lob.fileopen(v_file_loc, dbms_lob.file_readonly);
v_amount := dbms_lob.getlength(v_file_loc);
for i in 1 .. 500 loop
v_dst_offset := 1;
v_src_offset := 1;
insert into test(data) values(empty_blob()) returning data into v_dest_lob;
dbms_lob.loadblobfromfile(v_dest_lob, v_file_loc, v_amount, v_dst_offset, v_src_offset);
end loop;
commit;
dbms_lob.fileclose(v_file_loc);
end;
/