BLOBカラムにはVARCHAR2で収まらないような大容量のデータを格納することができます。ただ、BLOBを扱うのはVARCHAR2に比べるとやっかいです。下記はBLOBカラムにBLOBデータを登録する超シンプルなサンプルPL/SQLになりますので、参考にしていただければと思います。
BLOBカラムにデータを登録するサンプルPL/SQL
PLSQLの実行
DECLARE WK_DATA VARCHAR2(10000) := 'BLOB変換対象の文字列'; WK_BLOB BLOB; BEGIN -- 一時BLOBの初期化 DBMS_LOB.CREATETEMPORARY(WK_BLOB, TRUE, DBMS_LOB.CALL); DBMS_LOB.OPEN(WK_BLOB, DBMS_LOB.LOB_READWRITE); -- 文字列をBLOBに変換して、BLOB変数に格納する DBMS_LOB.WRITEAPPEND(WK_BLOB, LENGTHB(WK_DATA), UTL_RAW.CAST_TO_RAW(WK_DATA)); -- テーブルへBLOBデータを登録 INSERT INTO TB_SAMPLE (ID, BLOB_DATA) VALUES (1, WK_BLOB); COMMIT; -- 一時BLOBの開放 DBMS_LOB.CLOSE(WK_BLOB); DBMS_LOB.FREETEMPORARY(WK_BLOB); END; / PL/SQLプロシージャが正常に完了しました。
SQLでBLOBカラムを出力
SELECT UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(BLOB_DATA,2000,1)) FROM TB_SAMPLE ; UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(BLOB_DATA,2000,1)) ------------------------------------------------------------ BLOB変換対象の文字列