Creazione e gestione di package

È possibile creare e gestire package PL/SQL.

Vedere anche: "Esercitazione: dichiarazione di variabili e costanti in un sottoprogramma", che mostra come modificare il corpo di un package

Informazioni sulla struttura del package

Un package ha sempre una specifica e di solito ha un corpo. La specifica definisce il pacchetto stesso ed è un'interfaccia API (Application Program Interface). Il corpo definisce le query per i cursori dichiarati e il codice per i sottoprogrammi dichiarati nella specifica del pacchetto.

La specifica del package definisce il package, dichiarando I tipi, le variabili, le costanti, le eccezioni, i cursori dichiarati e i sottoprogrammi ai quale è possibile far riferimento dall'esterno del package. Una specifica package è un'API (Application Program interface) : contiene tutte le informazioni di che i programmi client necessitano per richiamare le rispettive sottoprogrammi, ma nessuna informazione sulla relativa implementazione.

Il package body definisce le query per i cursori dichiarati e il codice per i sottoprogrammi, che vengono dichiarati nella specifica package (pertanto, un package con cursori o sottoprogrammi non dichiarati non necessita di un corpo). Il package body può inoltre definire sottoprogrammi locali , che non vengono dichiarati nella specifica e possono essere richiamati solo da altri sottoprogrammi nel package. Il contenuto del package body non è visibile per i programmi client. È possibile modificare il package body senza invalidare le applicazioni che richiamano il package.

Vedere anche:

Esercitazione: Creazione di una specifica package

Questa esercitazione mostra come utilizzare lo strumento Crea package per creare una specifica per un package denominato EMP_EVAL, visualizzato in molte esercitazioni ed esempi riportati in questo documento.

Per creare una specifica PACKAGE, utilizzare lo strumento di SQL Developer Crea PACKAGE o l'istruzione DDL CREATE PACKAGE.

Passi per creare una specifica di package utilizzando lo strumento Crea package:

  1. Nel frame Connessioni espandere hr_conn.

  2. Nella lista dei tipi di oggetto schema fare clic con il pulsante destro del mouse su Pacchetti.

  3. Nell'elenco di opzioni, fare clic su Nuovo pacchetto.

    Viene visualizzata la finestra Crea package. Il campo Schema ha il valore HR, il campo Nome ha il valore predefinito PACKAGE1 e la casella di controllo Aggiungi nuova origine in minuscolo è deselezionata.

  4. Per Schema accettare il valore predefinito HR.

  5. Per Nome, modificare il valore PACKAGE1 in EMP_EVAL.

  6. Fare clic su OK.

    Viene aperto il riquadro EMP_EVAL, in cui è riportata l'istruzione CREATE PACKAGE che ha creato il PACKAGE:

     CREATE OR REPLACE PACKAGE emp_eval AS
    
     /* TODO enter package declarations (types, exceptions, methods etc) here */
    
     END emp_eval;
    

    Il titolo del riquadro è in corsivo, a significare che il package non è salvato nel database.

  7. (Facoltativo) Nell'istruzione CREATE PACKAGE sostituire il commento con le dichiarazioni.

    Se questo passo non viene eseguito ora, è possibile eseguirlo in un secondo momento, come illustrato in "Esercitazione: Modifica della specifica di un package".

  8. Dal menu File, selezionare Salva.

    Oracle Database compila il package e lo salva. Il titolo del riquadro EMP_EVAL non è più in corsivo.

Vedere anche: Oracle Database PL/SQL Language Reference per informazioni sull'istruzione CREATE PACKAGE (per la specifica del PACKAGE)

Esercitazione: Modifica della specifica di un package

Questa esercitazione mostra come utilizzare lo strumento Modifica per modificare le specifiche del pacchetto EMP_EVAL, che viene visualizzato in molti tutorial ed esempi in questo documento. In particolare, l'esercitazione mostra come aggiungere le dichiarazioni per una procedura, EVAL_DEPARTMENT e una funzione, CALCULATE_SCORE.

Per modificare una specifica PACKAGE, utilizzare lo strumento Modifica di SQL Developer o l'istruzione DDL CREATE PACKAGE con la clausola OR REPLACE.

Per modificare la specifica package EMP_EVAL utilizzando lo strumento Modifica, attenersi alla procedura riportata di seguito.

  1. Nel frame Connessioni espandere hr_conn.

  2. Nella lista dei tipi di oggetto schema espandere Pacchetti.

  3. Nell'elenco dei pacchetti fare clic con il pulsante destro del mouse su EMP_EVAL.

  4. Nell'elenco di scelte fare clic su Modifica.

    Viene aperto il riquadro EMP_EVAL, in cui è riportata l'istruzione CREATE PACKAGE che ha creato il PACKAGE:

     CREATE OR REPLACE PACKAGE emp_eval AS
    
     /* TODO enter package declarations (types, exceptions, methods etc) here */
    
     END emp_eval;
    

    Il titolo del riquadro non è in corsivo, a significare che il package è salvato nel database.

  5. Nel riquadro EMP_EVAL sostituire il commento con questo codice:

     PROCEDURE eval_department ( dept_id IN NUMBER );
    
     FUNCTION calculate_score ( evaluation_id IN NUMBER
                             , performance_id IN NUMBER)
                             RETURN NUMBER;
    

    Il titolo del riquadro EMP_EVAL cambia in corsivo, indicando che le modifiche non sono state salvate nel database.

  6. Fare clic sull'icona Compila.

    La specifica package modificata viene compilata e salvata nel database. Il titolo del riquadro EMP_EVAL non è più in corsivo.

Vedere anche: Oracle Database PL/SQL Language Reference per informazioni sull'istruzione CREATE PACKAGE con la clausola OR REPLACE

Esercitazione: Creazione di un package body

Questo tutorial mostra come utilizzare lo strumento Crea corpo per creare un corpo per il pacchetto EMP_EVAL, che appare in molti esempi e tutorial in questo documento.

Per creare un PACKAGE BODY, utilizzare lo strumento di SQL Developer Crea corpo o l'istruzione DDL CREATE PACKAGE BODY.

Per creare un corpo per il package EMP_EVAL utilizzando lo strumento Crea testo, attenersi alla procedura indicata di seguito.

  1. Nel frame Connessioni espandere hr_conn.

  2. Nella lista dei tipi di oggetto schema espandere Pacchetti.

  3. Nell'elenco dei pacchetti fare clic con il pulsante destro del mouse su EMP_EVAL.

  4. Nell'elenco di scelte, fare clic su Crea corpo.

    Viene visualizzato un riquadro Corpo EMP_EVAL che mostra il codice generato automaticamente per il package body:

     CREATE OR REPLACE
     PACKAGE BODY EMP_EVAL AS
    
     PROCEDURE eval_department(dept_id IN NUMBER) AS
     BEGIN
    
         -- TODO implementation required for PROCEDURE EMP_EVAL.eval_department
         NULL;
     END eval_department;
    
     FUNCTION calculate_score ( evaluation_id IN NUMBER
                             , performance_id IN NUMBER)
                             RETURN NUMBER AS
     BEGIN
    
         -- TODO implementation required for FUNCTION EMP_EVAL.calculate_score
         RETURN NULL;
     END calculate_score;
    
     END EMP_EVAL;
    

    Il titolo del riquadro è in corsivo, a significare che il codice non è salvato nel database.

  5. (Facoltativo) Nell'istruzione CREATE PACKAGE BODY:

    • Sostituire i commenti con istruzioni eseguibili.

    • (Facoltativo) Nella parte eseguibile della procedura, eliminare NULL o sostituirlo con un'istruzione eseguibile.

    • (Facoltativo) Nella parte eseguibile della funzione, sostituire NULL con un'altra espressione.

    Se non si completa questo passo ora, è possibile farlo in un secondo momento, come illustrato in "Esercitazione: Dichiarazione di variabili e costanti in un sottoprogramma".

  6. Fare clic sull'icona Compila.

    Il package body modificato viene compilato e salvato nel database. Il titolo del riquadro Corpo EMP_EVAL non è più in corsivo.

Vedere anche: Oracle Database PL/SQL Language Reference per informazioni sull'istruzione CREATE PACKAGE BODY (per il corpo del PACKAGE)

Eliminazione di un package

Per eliminare un PACKAGE (specifica e corpo), utilizzare il riquadro delle connessioni SQL Developer e lo strumento Elimina oppure l'istruzione DDL DROP PACKAGE.

Attenzione: non rilasciare il pacchetto EMP_EVAL: è necessario per esercitazioni successive. Se si desidera provare a eliminare i package, creare quelli semplici e quindi eliminarli.

Per eliminare un package utilizzando lo strumento Elimina, attenersi alla procedura riportata di seguito.

  1. Nel frame Connessioni espandere hr_conn.

  2. Nella lista dei tipi di oggetto schema espandere Pacchetti.

    Viene visualizzata una lista di package.

  3. Fare clic con il pulsante destro del mouse sull'elenco dei pacchetti da eliminare.

  4. Nell'elenco di opzioni, fare clic su Elimina package.

  5. Nella finestra Rilascia fare clic su Applica.

  6. Nella finestra Conferma, fare clic su OK.

Vedere anche: Oracle Database PL/SQL Language Reference per informazioni sull'istruzione DROP PACKAGE