2010-02-04 15 views
5

Usar Oracle 10g.Actualizar un procedimiento individual en un paquete Oracle

Estoy escribiendo un script para aplicar los cambios delta realizados en nuestro sistema de desarrollo a nuestro sistema de escenario.

¿Hay alguna manera de modificar o insertar un procedimiento individual dentro de un paquete sin incluir todo el contenido del paquete en mi script? Creo que la respuesta es no, pero quería estar seguro porque va a ser bastante feo tener que incluir todo el contenido de los paquetes modificados cuando los cambios fueron pequeños.

+1

Si parece feo, ¿quizás sus paquetes son un poco grandes? - p.ej. si se incluyen muchos procedimientos y funciones no relacionados en "superpaquetes", puede ser una buena idea dividirlos en líneas lógicas en paquetes separados. –

Respuesta

4

Lo siento, pero tu instinto es correcto. La unidad de cambio es el CUERPO DEL PAQUETE.

No estoy seguro por qué piensas que es feo. seguramente solo se trata de llamar un script para el paquete?

2

No, se debe reemplazar un cuerpo de paquete en conjunto. En lugar de incluir el código para varios paquetes en una sola secuencia de comandos, crearía un archivo por especificación de paquete y un archivo por cuerpo de paquete. A continuación, puede escribir un "meta-script" para ejecutar los cambios requeridos del paquete en SQL Plus:

@@package1.spc 
@@package1.bdy 
@@package2.bdy 
+0

podría romper este concepto aún más y tener un archivo por procedimiento en el encabezado y el cuerpo del paquete. De esta forma, su "meta-script" puede juntar las piezas que necesita en el momento de la construcción, pero facilita el seguimiento de cambios en su sistema de control de fuente, especialmente para procedimientos grandes. – ninesided

+0

¿Quiere decir desglosar la secuencia de comandos de un cuerpo de paquete en varios archivos con cada procedimiento de cuerpo de paquete en un archivo separado? Eek. Creo que evitaría eso. El seguimiento de cambios es más fácil en un solo archivo con diffs. –

+0

No, no, no, ¡no quise decir eso! Cada archivo contiene una ** especificación del paquete ** completa o cuerpo. –

0

Se enfrentó al mismo problema. Simplemente creó un paquete separado para un procedimiento que cambia con frecuencia.

Cuestiones relacionadas