SOLVED: ALTER COMPILE WRAPPED PROCEDURES Warning: Package altered with compilation errors.

  • From: Juan Carlos Reyes Pacheco <jcdrpllist@xxxxxxxxx>
  • To: ORACLE-L <oracle-l@xxxxxxxxxxxxx>
  • Date: Tue, 30 Aug 2016 16:05:15 -0400

Hello I solved this problem I suffer several years.
Most of wrapped procedures compiles, but some of them do not. Here is one
example
(on 12c)

Problem: you can't compile a wrapped procedure
SQL> alter package DAZ.PCK_GEN_XLS compile;
Warning: Package altered with compilation errors.


1) solution recreating fails.
SQL> CREATE OR REPLACE PACKAGE BODY DAZ.PCK_GEN_XLS  wrapped
  2  a000000
  3  b2
 61
dX6ImnUV6bAb5NjrivfS9fIUxpM/2S8TOmTjAh4tQDBW0t8k+8qDk3pliM7693JDiiy5VPy/
 62
5qCkVBE6cRkIq5XsWHtastu80Xg8xRGSf0JR7TaGjhUQkUQjvXOuWELvBJrd/Zr5m6oGeMyj
 63  /
Warning: Package Body created with compilation errors.

2) Adding a blank line: works temporarily you have to do this each time
SQL> CREATE OR REPLACE PACKAGE BODY DAZ.PCK_GEN_XLS  wrapped
  2  a000000
  3  b2
 61
dX6ImnUV6bAb5NjrivfS9fIUxpM/2S8TOmTjAh4tQDBW0t8k+8qDk3pliM7693JDiiy5VPy/
 62
5qCkVBE6cRkIq5XsWHtastu80Xg8xRGSf0JR7TaGjhUQkUQjvXOuWELvBJrd/Zr5m6oGeMyj
 63
 64  /
Package body created.

   But if you try to recompile it fails again

alter package DAZ.PCK_GEN_XLS compile;
Warning: Package altered with compilation errors.


You can get this using a query like this
SELECT
     REPLACE
          (REPLACE
              (REPLACE
                  (
TRIM(LTRIM( DBMS_METADATA.GET_DDL (CASE WHEN OBJECT_TYPE ='PACKAGE BODY'
THEN 'PACKAGE' ELSE OBJECT_TYPE END, OBJECT_NAME,OWNER),CHR(10)))
||CHR(10)||CHR(10)||'/'||CHR(10)||CHR (10),
              ' EDITIONABLE', NULL ),
                  ' NONEDITIONABLE', NULL ),
           'CREATE OR REPLACE PACKAGE BODY',
           CHR (10)||CHR (10)||'/'|| CHR (10)||CHR(10)|| 'CREATE OR REPLACE
PACKAGE BODY'
          ) CMD
  FROM SYS.PROCEDURE$, DBA_OBJECTS A
 WHERE OBJECT_ID = OBJ#
   AND STATUS =
             'INVALID'
                      --AND OBJECT_TYPE IN ('FUNCTION',
'PROCEDURE','PACKAGE')
   AND NOT BITAND (OPTIONS, 2) = 0
/*WRAPPED*/
/



3) Adding two / gives a permanent solution: but you have to add the two
lineas each time you re-wrap the procedure


SQL> CREATE OR REPLACE PACKAGE BODY DAZ.PCK_GEN_XLS  wrapped
  2  a000000
  3  b2
 61
dX6ImnUV6bAb5NjrivfS9fIUxpM/2S8TOmTjAh4tQDBW0t8k+8qDk3pliM7693JDiiy5VPy/
 62
5qCkVBE6cRkIq5XsWHtastu80Xg8xRGSf0JR7TaGjhUQkUQjvXOuWELvBJrd/Zr5m6oGeMyj
 63  //
 64  /

 SQL> alter package DAZ.PCK_GEN_XLS compile;
 Package altered.

SQL>

Other related posts:

  • » SOLVED: ALTER COMPILE WRAPPED PROCEDURES Warning: Package altered with compilation errors. - Juan Carlos Reyes Pacheco