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;
/