📄 filepath1.pkg
字号:
CREATE TYPE dirs_tabtype IS TABLE OF VARCHAR2(2000);
/
CREATE OR REPLACE PACKAGE fileIO
IS
c_delim CHAR(1) := ';';
dirs dirs_tabtype := dirs_tabtype ();
PROCEDURE setpath (str IN VARCHAR2, delim IN VARCHAR2 := c_delim);
FUNCTION path RETURN VARCHAR2;
FUNCTION pathlist RETURN dirs_tabtype;
FUNCTION open (file IN VARCHAR2, loc IN VARCHAR2 := NULL) RETURN UTL_FILE.FILE_TYPE;
END;
/
CREATE OR REPLACE PACKAGE BODY fileIO
IS
g_path VARCHAR2(32767);
g_delim CHAR(1) := c_delim;
PROCEDURE setpath (str IN VARCHAR2, delim IN VARCHAR2 := c_delim)
IS
BEGIN
g_path := str;
g_delim := NVL (delim, c_delim);
str2list.parse (str, g_delim, 'fileIO', 'dirs', extend_needed => TRUE);
END;
FUNCTION path RETURN VARCHAR2
IS
BEGIN
RETURN g_path;
END;
FUNCTION pathlist RETURN dirs_tabtype
IS
BEGIN
RETURN dirs;
END;
FUNCTION open (file IN VARCHAR2, loc IN VARCHAR2 := NULL) RETURN UTL_FILE.FILE_TYPE
IS
indx PLS_INTEGER;
/* Location of next path separator */
v_lastsep PLS_INTEGER := 1;
v_sep PLS_INTEGER := INSTR (g_path, c_delim);
v_dir VARCHAR2(500);
retval UTL_FILE.FILE_TYPE;
PROCEDURE set_next_dir IS
BEGIN
v_sep := INSTR (g_path, c_delim, v_sep+1);
IF v_sep = 0
THEN
v_dir := SUBSTR (g_path, v_lastsep);
ELSE
v_dir := SUBSTR (g_path, v_lastsep, v_sep - v_lastsep);
END IF;
END;
BEGIN
IF loc IS NOT NULL
THEN
indx := NULL;
v_dir := loc;
ELSE
indx := dirs.FIRST;
v_dir := dirs(indx);
END IF;
WHILE v_dir IS NOT NULL
LOOP
BEGIN
--DBMS_OUTPUT.PUT_LINE ('...looking in ' || v_dir);
retval := UTL_FILE.FOPEN (v_dir, file, 'R');
EXIT;
EXCEPTION
WHEN OTHERS
THEN
indx := dirs.NEXT (indx);
IF indx IS NULL
THEN
v_dir := NULL;
ELSE
v_dir := dirs(indx);
END IF;
END;
END LOOP;
RETURN retval;
END;
END;
/
/*======================================================================
| Supplement to the third edition of Oracle PL/SQL Programming by Steven
| Feuerstein with Bill Pribyl, Copyright (c) 1997-2002 O'Reilly &
| Associates, Inc. To submit corrections or find more code samples visit
| http://www.oreilly.com/catalog/oraclep3/
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -