MIME_TYPE = 'text/plain' のテーブル (x_files) に保存されている BLOB コンテンツがあり、この BLOB データを解析し、VARCHAR2 列を持つテーブル (TEMP_UPLOAD_DATA) にデータを挿入したいと考えています。
サンプルコードを教えてください。以下に示すようにコードを書きました-DBMS_OUTPUTを実行すると正常に機能しますが、データをテーブルに挿入しようとすると正常に機能しません
最初に BLOB を CLOB に変換してから、データを解析してテーブルに挿入する必要がありますか? 入力をリクエストする
データベース内のテーブル:
Table_name: X_files
ID BLOB_CONTENT MIME_TYPE FILE_NAME LAST_UPDATED CHARECTER_SET
7 BLOB text/plain testing_blob.txt 01/28/2013 -
Table name: TEMP_UPLOAD_DATA
Column Name Data Type Nullable Default Primary Key
UPLOAD_COLUMN VARCHAR2(1000) Yes -
-
私が書いたコード:-これは、 DBMS_OUTPUT を実行すると正常に機能しますが、データをテーブルに挿入しようとすると正常に機能しません。
DECLARE
l_num NUMBER(8);
i NUMBER(4);
lob_loc BLOB;
update_details VARCHAR2(10000);
BEGIN
SELECT BLOB_CONTENT INTO lob_loc FROM x_files WHERE id = 7;
update_details := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(lob_loc, 10000, 1));
l_num := (LENGTH(update_details)-LENGTH(REPLACE(update_details,'@@')))/LENGTH('@@');
for i in 1..l_num
LOOP
DBMS_OUTPUT.PUT_LINE('STRING IS---' || SUBSTR(update_details,instr(update_details,'@@',1,i),(instr(update_details,'##',1,i)-instr(update_details,'@@',1,i)+1)));
--INSERT INTO TEMP_UPLOAD_DATA VALUES(SUBSTR(update_details,instr(update_details,'@@',1,i),(instr(update_details,'##',1,i)-instr(update_details,'@@',1,i)+1)));
END LOOP;
END;
ありがとう