Oracle - Paquete no se descompile después del rename de una de sus tablas

 
Vista:

Paquete no se descompile después del rename de una de sus tablas

Publicado por mark franco ruiz (1 intervención) el 01/10/2018 16:57:31
Hola

Cómo hacer que el paquete (pkg_test) no descompile mientras se cambia el nombre de una tabla interna (cambie el nombre de la tabla tabla_de_rueda a tabla_de_rueda_nueva) en línea a la tabla que se encuentra dentro del paquete (pkg_test).
Además de esto, hay un servicio web que consulta el paquete constantemente y lo bloquea mientras lo consume.

Una de las soluciones fue usar el comando "alterar paquete compilación pkg_test" pero el problema es que los servicios web ya han tomado el paquete (pkg_test) y no permiten la acción.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Paquete no se descompile después del rename de una de sus tablas

Publicado por Rafael (328 intervenciones) el 02/10/2018 13:07:59
Hola:

Un nivel de proteccion que tiene un PACKAGE, es invalidarse cuando algun objeto DESAPARECE, tu tienes compilado un procedimiento que usa el nombre explicito de una tabla... si la tabla ya no existe (por que le cambiaste el nombre) es logico que el programa aparezca como invalido (o descompilado como tu le llamas).

La opcion es no renombrar la tabla.... o recrear la tabla vacia....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ing. Elvis Muñoz Pruna
Val: 209
Plata
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Paquete no se descompile después del rename de una de sus tablas

Publicado por Ing. Elvis Muñoz Pruna (102 intervenciones) el 02/10/2018 18:27:46
Apoyo lo indicado por Rafael ya que no solo oracle sino que mas de una base de datos hace de invalidar por cambios de nombres de objetos es mas Oracle inclusive invalida las referencias a los objetos o por rename o add a columnas de una tabla ya que los procedimientos en el caso de columnas y si no los mapeaste correctamente te dan error de compilación.

Atento a cualquier comentario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Antonio
Val: 42
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Paquete no se descompile después del rename de una de sus tablas

Publicado por Antonio (13 intervenciones) el 14/11/2018 16:25:34
Eso está muy claro, me uno al ciriterio de los dos, un paquete que tiene dependencia de cualquier objeto se invalida ante cualquier variación de sus dependencias y eso, más que un problema, es una protección.
No obstante, si aún así hay algún mecanismo que necesita renombrar tablas como parte de su funcionamiento, entonces lo que se puede utilizar son las ejecuxiones imediatas, por ejemplo, dentro de un procedimiento del paquete al que se hace referencia a la tabla, pudiera ser de la siguiente manera:

...
PROCEDURE X AS
Tabla VARCHAR2 := 'NOMBRE' ;
Cant INTEGER ;
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM '||Tabla||' WHERE COL1=10 ......' INTO Cant ;
END ;
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar