Hi All. I am checking for a directory in utl_file_dir from table v$parameter. It compiles with errors(see below). Could anyone please tell me what I am doing wrong?
1 CREATE OR REPLACE FUNCTION isvaliddir (dir_in IN VARCHAR2)
2 RETURN BOOLEAN
3 IS
4 v_value v$parameter.VALUE%TYPE;
5 BEGIN
6 SELECT VALUE
7 INTO v_value
8 FROM v$parameter
9 WHERE name = 'utl_file_dir'
10 AND ( UPPER (VALUE) LIKE
11 UPPER (dir_in)
12 OR VALUE = '*'); -- Any directory is OK!
13 RETURN TRUE;
14 EXCEPTION
15 WHEN NO_DATA_FOUND
16 THEN
17 RETURN FALSE;
18 WHEN TOO_MANY_ROWS
19 THEN
20 DBMS_OUTPUT.put_line (
21 'Multiple directories fit criteria. Please narrow.'
22 );
23 RETURN TRUE;
24* END;
25 /
Warning: Function created with compilation errors.
SQL> sho err
Errors for FUNCTION ISVALIDDIR:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/12 PLS-00201: identifier 'SYS.V_$PARAMETER' must be declared
4/12 PL/SQL: Item ignored
6/4 PL/SQL: SQL Statement ignored
8/11 PLS-00201: identifier 'SYS.V_$PARAMETER' must be declared
1 CREATE OR REPLACE FUNCTION isvaliddir (dir_in IN VARCHAR2)
2 RETURN BOOLEAN
3 IS
4 v_value v$parameter.VALUE%TYPE;
5 BEGIN
6 SELECT VALUE
7 INTO v_value
8 FROM v$parameter
9 WHERE name = 'utl_file_dir'
10 AND ( UPPER (VALUE) LIKE
11 UPPER (dir_in)
12 OR VALUE = '*'); -- Any directory is OK!
13 RETURN TRUE;
14 EXCEPTION
15 WHEN NO_DATA_FOUND
16 THEN
17 RETURN FALSE;
18 WHEN TOO_MANY_ROWS
19 THEN
20 DBMS_OUTPUT.put_line (
21 'Multiple directories fit criteria. Please narrow.'
22 );
23 RETURN TRUE;
24* END;
25 /
Warning: Function created with compilation errors.
SQL> sho err
Errors for FUNCTION ISVALIDDIR:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/12 PLS-00201: identifier 'SYS.V_$PARAMETER' must be declared
4/12 PL/SQL: Item ignored
6/4 PL/SQL: SQL Statement ignored
8/11 PLS-00201: identifier 'SYS.V_$PARAMETER' must be declared