ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

BLOBにファイルを投入

  • まずシステムでログインしてDIRECTORYを定義する

>SQL SYSTEM/MANAGER
CREATE DIRECTORY EXL_DIR AS 'C:\EX_TEMP';

GRANT READ ON DIRECTORY EXL_DIR TO PUBLIC;

  • 指定されたところにファイルをコピーしてから

SET SERVEROUTPUT ON
DECLARE
/* 実行用 */
V_BLOB_LOCATER BLOB;
V_HANDLE BFILE := BFILENAME('EXL_DIR','text.xls');
V_AMOUNT PLS_INTEGER;
V_DOFFSET PLS_INTEGER := 1;
V_SOFFSET PLS_INTEGER := 1;
BEGIN
DBMS_LOB.FILEOPEN(V_HANDLE,DBMS_LOB.FILE_READONLY);
V_AMOUNT := DBMS_LOB.GETLENGTH(V_HANDLE);
INSERT INTO TEST_BLOB
(ID, BLOBDATA)
VALUES
(ID, EMPTY_BLOB())
RETURNING BLOBDATA INTO V_BLOB_LOCATER;

DBMS_LOB.LOADBLOBFROMFILE(V_BLOB_LOCATER,
V_HANDLE,
V_AMOUNT,
V_DOFFSET,
V_SOFFSET);
DBMS_OUTPUT.PUT_LINE ( '書き込まれたサイズ : ' || V_DOFFSET || 'BYTES' );
COMMIT;
DBMS_LOB.FILECLOSE(V_HANDLE);
END;
/