\set ECHO none SET client_min_messages = NOTICE; \set ECHO all INSERT INTO utl_file.utl_file_dir(dir) VALUES(utl_file.tmpdir()); CREATE OR REPLACE FUNCTION gen_file(dir text) RETURNS void AS $$ DECLARE f utl_file.file_type; BEGIN f := utl_file.fopen(dir, 'regress_orafce.txt', 'w'); PERFORM utl_file.put_line(f, 'ABC'); PERFORM utl_file.put_line(f, '123'::numeric); PERFORM utl_file.put_line(f, '-----'); PERFORM utl_file.new_line(f); PERFORM utl_file.put_line(f, '-----'); PERFORM utl_file.new_line(f, 0); PERFORM utl_file.put_line(f, '-----'); PERFORM utl_file.new_line(f, 2); PERFORM utl_file.put_line(f, '-----'); PERFORM utl_file.put(f, 'A'); PERFORM utl_file.put(f, 'B'); PERFORM utl_file.new_line(f); PERFORM utl_file.putf(f, '[1=%s, 2=%s, 3=%s, 4=%s, 5=%s]', '1', '2', '3', '4', '5'); PERFORM utl_file.new_line(f); PERFORM utl_file.put_line(f, '1234567890'); f := utl_file.fclose(f); END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION read_file(dir text) RETURNS void AS $$ DECLARE f utl_file.file_type; BEGIN f := utl_file.fopen(dir, 'regress_orafce.txt', 'r'); FOR i IN 1..11 LOOP RAISE NOTICE '[%] >>%<<', i, utl_file.get_line(f); END LOOP; RAISE NOTICE '>>%<<', utl_file.get_line(f, 4); RAISE NOTICE '>>%<<', utl_file.get_line(f, 4); RAISE NOTICE '>>%<<', utl_file.get_line(f); RAISE NOTICE '>>%<<', utl_file.get_line(f); EXCEPTION -- WHEN no_data_found THEN, 8.1 plpgsql doesn't know no_data_found WHEN others THEN RAISE NOTICE 'finish % ', sqlerrm; RAISE NOTICE 'is_open = %', utl_file.is_open(f); PERFORM utl_file.fclose_all(); RAISE NOTICE 'is_open = %', utl_file.is_open(f); END; $$ LANGUAGE plpgsql; SELECT gen_file(utl_file.tmpdir()); SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce.txt'); SELECT utl_file.fcopy(utl_file.tmpdir(), 'regress_orafce.txt', utl_file.tmpdir(), 'regress_orafce2.txt'); SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce2.txt'); SELECT utl_file.frename(utl_file.tmpdir(), 'regress_orafce2.txt', utl_file.tmpdir(), 'regress_orafce.txt', true); SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce.txt'); SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce2.txt'); SELECT read_file(utl_file.tmpdir()); SELECT utl_file.fremove(utl_file.tmpdir(), 'regress_orafce.txt'); SELECT fexists FROM utl_file.fgetattr(utl_file.tmpdir(), 'regress_orafce.txt'); DROP FUNCTION gen_file(text); DROP FUNCTION read_file(text); DELETE FROM utl_file.utl_file_dir;