Você está na página 1de 2

CREATE TABLE TB_DEPTO_UTL

(DEPARTMENT_ID NUMBER(10),
DEPARTMENT_NAME VARCHAR2(50),
MANAGER_ID NUMBER(8),
LOCATION_ID NUMBER(8));

----

DECLARE
V_LINHA VARCHAR2(2000) := '';
V_ARQUIVO UTL_FILE.FILE_TYPE;
BEGIN
V_ARQUIVO := UTL_FILE.FOPEN('C:\temp', 'CLAYTON.TXT', 'W');
FOR i IN (SELECT rpad(DEPARTMENT_ID,4,' ') department_id,
rpad (DEPARTMENT_NAME,30 , ' ') department_name,
rpad (manager_id, 6, ' ' ) manager_id,
rpad (location_id , 4, ' ' ) location_id
FROM DEPARTMENTS)
LOOP
V_LINHA := I.DEPARTMENT_ID ||
I.DEPARTMENT_NAME||
I.MANAGER_ID ||
I.LOCATION_ID;
UTL_FILE.PUT_LINE(V_ARQUIVO, V_LINHA);
END LOOP;
UTL_FILE.FCLOSE(V_ARQUIVO);
END;

------

DECLARE
arquivo_ler UTL_File.File_Type;
Linha VARCHAR2(100);
v_id TB_DEPTO_utl.DEPARTMENT_ID%type;
v_name TB_DEPTO_utl.DEPARTMENT_NAME%type;
v_manager TB_DEPTO_utl.MANAGER_ID%type;
v_location TB_DEPTO_utl.location_ID%type;
BEGIN
arquivo_ler := UTL_File.Fopen('c:\temp','CLAYTON.TXT',
'R');
LOOP
UTL_File.Get_Line(arquivo_ler, Linha);
-- Manipulao da linha lida
SELECT SUBSTR (linha,1,4),
SUBSTR (linha,5,30),
SUBSTR (linha, 35,6),
SUBSTR (linha,41,4)
INTO v_id,
v_name,
v_manager,
v_location
FROM dual;
INSERT INTO tb_depto_utl VALUES
(v_id, v_name, v_manager, v_location
);
END LOOP;
COMMIT;
UTL_File.Fclose(arquivo_ler);
Dbms_Output.Put_Line('Arquivo processado com sucesso.');
EXCEPTION
WHEN No_data_found THEN
UTL_File.Fclose(arquivo_ler);
COMMIT;
WHEN UTL_FILE.INVALID_PATH THEN
Dbms_Output.Put_Line('Diretrio invlido.');
UTL_File.Fclose(arquivo_ler);
WHEN OTHERS THEN
Dbms_Output.Put_Line ('Problemas na leitura do arquivo.');
UTL_File.Fclose(arquivo_ler);
END;

Você também pode gostar