2010-02-04 10 views
5

Utilizzo di Oracle 10g.Aggiornamento di una singola procedura in un pacchetto Oracle

Sto scrivendo uno script per applicare le modifiche delta apportate al nostro sistema di sviluppo sul nostro sistema di sviluppo.

C'è un modo per modificare o inserire una singola procedura all'interno di un pacchetto senza includere l'intero contenuto del pacchetto nel mio script? Penso che la risposta sia no, ma volevo essere sicuro perché sarebbe davvero brutto dover includere l'intero contenuto di tutti i pacchetti modificati quando le modifiche erano piccole.

+1

Se sembra brutto, forse i tuoi pacchetti sono un po 'grandi? - per esempio. se troppe procedure e funzioni non correlate sono raggruppate in "super pacchetti", può essere una buona idea dividerle lungo linee logiche in pacchetti separati. –

risposta

4

Scusa ma il tuo istinto è corretto. L'unità di modifica è il PACKAGE BODY.

Non so perché pensi che sia brutto però. sicuramente è solo questione di chiamare uno script per il pacchetto?

2

No, un corpo del pacchetto deve essere sostituito nel suo complesso. Piuttosto che includere il codice per diversi pacchetti in un singolo script, creerei un file per ogni specifica del pacchetto e un file per ogni corpo del pacchetto. È quindi possibile scrivere un "meta-script" per eseguire le modifiche richieste del pacchetto in SQL Plus:

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

è possibile interrompere ulteriormente questo concetto e disporre di un file per procedura nell'intestazione e nel corpo del pacchetto. In questo modo la tua "meta-sceneggiatura" può riunire i pezzi di cui ha bisogno in fase di produzione, ma rende più facile il tracciamento delle modifiche nel sistema di controllo del codice sorgente, in particolare per le procedure di grandi dimensioni. – ninesided

+0

Intendi ripartire lo script di un corpo del pacchetto in più file con ciascuna procedura del corpo del pacchetto in un file separato? Eek. Penso che eviterei quello. Il rilevamento delle modifiche è più semplice in un singolo file con diff. –

+0

No, no, no, non intendevo quello! Ogni file contiene una specifica o un corpo del pacchetto ** completo **. –

0

Di fronte allo stesso problema. Semplicemente creato un pacchetto separato per una procedura che cambia frequentemente.

Problemi correlati