In the following code, the procedure my_function declares a variable, rating, and a function, value_check.
The function redeclares the variable.
Then the function references the global variable by qualifying it with the procedure name.
SQL> SQL> CREATE OR REPLACE PROCEDURE my_function (my_val NUMBER) AS 2 rating NUMBER := 3; 3-- w ww. j a v a 2 s . com 4 FUNCTION value_check RETURN BOOLEAN IS 5 rating NUMBER := 1; 6 over_limit BOOLEAN; 7 BEGIN 8 IF my_function.rating <= my_val THEN 9 over_limit := FALSE; 10 ELSE 11 over_limit := TRUE; 12 rating := my_val; 13 END IF; 14 RETURN over_limit; 15 END value_check; 16 BEGIN 17 IF value_check THEN 18 DBMS_OUTPUT.PUT_LINE('result (' || TO_CHAR(my_val) || '). ' 19 || 'Rating: ' || TO_CHAR(rating)); 20 ELSE 21 DBMS_OUTPUT.PUT_LINE 22 ('Credit rating OK. ' || 'Rating: ' || TO_CHAR(rating)); 23 END IF; 24 END; 25 / Procedure created. SQL> SQL> BEGIN 2 my_function(1); 3 END; 4 / result (1). Rating: 3 PL/SQL procedure successfully completed. SQL>