PLS-00222: stored procedure's "select" calls a user-defined function
Date: 5 Feb 2003 16:16:45 -0800
Message-ID: <cee3515e.0302051616.42b905a5_at_posting.google.com>
Hi,
This problem occurs on Oracle 8.1.7.0.0 It works fine on 9.0.1.1.1. (I need to support both versions; hence the concern).
Oracle throws a PLS-00222 error when I call a user-defined function from a select statement in a stored procedure. Oddly the procedure compiles OK when I qualify the function with the schema name.
The usual google/newsgroup search didn't come up with any similar complaints.
For 8i, do I need to qualify the schema name when I call, from within a stored procedure's select statement, a user defined function? Can I get around this requirement? I'd like to keep the code 'unaware' of its schema name if possible.
examples are below. thanks in advance,
bill m
This doesn't work:
CREATE OR REPLACE PROCEDURE rpt_upd_summary_month (
from_date date, to_date date) AS BEGIN delete from rpt_table_month where year_month between year_month(rpt_upd_summary_month.from_date) and year_month(rpt_upd_summary_month.to_date)
;
end;
but if I qualify the calls to 'year_month', it works. ('pe' is the current schema):
CREATE OR REPLACE PROCEDURE rpt_upd_summary_month (
from_date date, to_date date) AS BEGIN delete from rpt_table_month where year_month between pe.year_month(rpt_upd_summary_month.from_date) and pe.year_month(rpt_upd_summary_month.to_date)
;
end;
where year_month is
CREATE OR REPLACE FUNCTION year_month (
in_date date ) return varchar AS return_var VARCHAR(7); BEGIN select to_char(year_month.in_date,'YYYY-MM') into return_var from dual; /* Return */ return return_var;END; Received on Thu Feb 06 2003 - 01:16:45 CET