17,088
社区成员
发帖
与我相关
我的任务
分享
-- 保存lob到表
CREATE OR REPLACE PROCEDURE "LOB_INSERT" (file_name_ varchar2, file_data_ in out nocopy blob) as
begin
insert into files (file_name, file_data)
values (file_name_, empty_blob())
returning file_data into file_data_;
end;
-- 更新表中的lob
CREATE OR REPLACE PROCEDURE "LOB_UPDATE" (id_ number, file_name_ varchar2, file_data_ in out nocopy blob) as
begin
update files set file_name = file_name_ where id = id_;
select file_data into file_data_ from files where id = id_
for update nowait;
end;
-- 从表中获取lob
CREATE OR REPLACE PROCEDURE "LOB_SELECT" (id_ number, file_data_ in out nocopy blob) as
begin
select file_data into file_data_ from files where id = id_;
end;
create or replace procedure lob_insert(data_ blob) as
begin
insert into files (file_name, file_data)
(select file_name, file_data from table(get_files(data_)));
end;
create or replace function get_files(data_ blob)
return table_file pipelined as
v row_file;
p number(9,0) := 1;
p_end number(9,0) := dbms_lob.getlength(data_);
begin
while (p <= p_end)
loop
--逐字节解析data_中的数据
end loop;
return;
end;