Wednesday, August 3, 2011

Example of copying/renaming/deleting files on your OS using PL/SQL


DECLARE

ORIG_FILE_NM VARCHAR2(4000) := 'foo.tst';
TMP_FILE_NM VARCHAR2(4000) := 'foo.tmp';
COPIED_FILE_RENM VARCHAR2(4000) := 'foo.txt2';
SRC_DIR VARCHAR2(4000) := 'TEST_DBMS_FILE_TRNSFR';
DEST_DIR VARCHAR2(4000) := 'TEST_DBMS_FILE_TRNSFR2';
FILE_DOES_NOT_EXIST EXCEPTION;
PRAGMA EXCEPTION_INIT(FILE_DOES_NOT_EXIST, -29283);

BEGIN
-- Clean up prev tmp file in case its still there.
BEGIN
UTL_FILE.FREMOVE(LOCATION => DEST_DIR, FILENAME => TMP_FILE_NM);
EXCEPTION
WHEN FILE_DOES_NOT_EXIST THEN
NULL;
END;

-- Copy the sample file (must be a size = multiple of 512B)
DBMS_FILE_TRANSFER.COPY_FILE(SOURCE_DIRECTORY_OBJECT => SRC_DIR
,SOURCE_FILE_NAME => ORIG_FILE_NM
,DESTINATION_DIRECTORY_OBJECT => DEST_DIR
,DESTINATION_FILE_NAME => TMP_FILE_NM);

-- rename the file @ the dest
UTL_FILE.FRENAME(SRC_LOCATION => DEST_DIR
,SRC_FILENAME => TMP_FILE_NM
,DEST_LOCATION => DEST_DIR
,DEST_FILENAME => COPIED_FILE_RENM);
END;

No comments:

Post a Comment