DELETE has always been a reserved word in PL/SQL; also,
NEW has been a reserved word since Oracle8.0 and there are many packages in ACS4.x that (re)define a procedure/function NEW. Now, PL/SQL as a block-structured programming language should obey the rules of scope and allow e.g. a procedure named DELETE inside a package named ACS_CONTENT. At least that is what Oracle 8.1.6 does. (Although I personally consider it a bad style to redefine reserved words in a programming language).
Since I don't have access to Oracle9i, could somebody (Robert?) run the following test and let us know what happens? Oracle8.1.6 for SUN Solaris allows the re-definition of the DELETE and NEW reserved words inside a user-defined package.
-- A package to test if the running Oracle version allows redefinition of the
-- NEW and DELETE reserved words
create or replace package test1 as
function new (
db_ver out VARCHAR2,
db_compatible out VARCHAR2
) return VARCHAR2;
procedure delete(
db_ver out VARCHAR2,
db_compatible out VARCHAR2
);
end test1;
/
show errors;
create or replace package body test1 as
function new(
db_ver out VARCHAR2,
db_compatible out VARCHAR2
) return VARCHAR2
is
begin
dbms_utility.db_version(db_ver,db_compatible);
return 'User-defined function NEW allowed in Version '||db_ver;
end new;
procedure delete (
db_ver out VARCHAR2,
db_compatible out VARCHAR2
)
is
begin
dbms_utility.db_version(db_ver,db_compatible);
end delete;
end test1;
/
show errors;
set serveroutput on format wrapped size 1000000
declare
db_ver VARCHAR2(12);
db_compatible VARCHAR2(12);
begin
test1.delete(db_ver,db_compatible);
dbms_output.put_line('User-defined procedure DELETE allowed in Version '||db_ver);
dbms_output.put_line(test1.new(db_ver,db_compatible));
end;
/