When you are create an object in Oracle Database, default object type will be marked editionable
. From 12c onwards, you can mark the objects as noneditionable
, and same you cannot edit with create or replace
. For altering the same you have to alter the object and change to editionable
.
This is applicable to View, Funcitons, Procedure, Trigger, Library, Type.
create or replace noneditionable procedure test_proc ( p int ) as
begin
null;
end;
select editionable from user_objects
where object_name = 'test_proc ';
//result
EDITIONABLE
N
create or replace procedure test_proc ( p int ) as
begin
dbms_output.put_line ( 'Editionable version' );
end;
//result
ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object.
With below you can alter the procedure.
alter procedure test_proc editionable;
create or replace procedure test_proc ( p int ) as
begin
dbms_output.put_line ( 'Editionable version' );
end;
exec test_proc (1);
//result
Editionable version