0
我需要從數據庫中檢索幾個大的波形文件,並希望檢索分爲較小的波形文件(大約5Mb)。我能怎麼做?我已經看到過程dbms_lob.read,但是這返回最大文件大小爲32Kb。split blob文件
問候
procedure extract_blob(p_id in number, wrote_length in out number, chunk out blob) is
len_file binary_integer;
myblob blob;
myname varchar2(255);
buffer_length number := 32760;
begin
select file_wav_data, file_wav_name, dbms_lob.getlength(file_wav_data)
into myblob, myname, lun_file
from t_wav
where id = p_id;
if(len_file > wrote_length) then
dbms_lob.read(myblob,buffer_length,wrote_length+1,chunk);
wrote_length := wrote_length + buffer_length;
else wrote_length := -999; --EOF
end if;
end;
'dbms_lob.read'返回一個RAW,原始數據被限制爲32kB,所以RAW可能不是正確的格式。你想用這些數據做什麼?你想在某處複製數據嗎?在服務器上?在客戶端?... –
對不起沒有時間爲你準備一個安納瑟爾,但我會給你一個小費。讀取32kb,然後將其寫入文件(utl_fiile.put_raw),讀取下一個32kb,將其寫入文件..在循環中執行此操作,直到您寫入您的5mbs或blob結束。但是可能存在一個問題,即wave文件具有特殊的文件結構(文件的開頭和結尾),因此僅僅分割文件就不那麼容易了 - 您將得到一個二進制分割文件。 –
@Vincent。我想開發一個存儲過程,它有一個BLOB作爲包含wave文件一部分的輸出參數。查看編輯。 –