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:
-
Oracle Database PL/SQL Language Reference per ulteriori informazioni sulla specifica package
-
Oracle Database PL/SQL Language Reference per ulteriori informazioni sul package body
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:
-
Nel frame Connessioni espandere hr_conn.
-
Nella lista dei tipi di oggetto schema fare clic con il pulsante destro del mouse su Pacchetti.
-
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.
-
Per Schema accettare il valore predefinito HR.
-
Per Nome, modificare il valore PACKAGE1 in
EMP_EVAL. -
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.
-
(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".
-
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.
-
Nel frame Connessioni espandere hr_conn.
-
Nella lista dei tipi di oggetto schema espandere Pacchetti.
-
Nell'elenco dei pacchetti fare clic con il pulsante destro del mouse su EMP_EVAL.
-
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.
-
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.
-
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.
-
Nel frame Connessioni espandere hr_conn.
-
Nella lista dei tipi di oggetto schema espandere Pacchetti.
-
Nell'elenco dei pacchetti fare clic con il pulsante destro del mouse su EMP_EVAL.
-
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.
-
(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".
-
-
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.
-
Nel frame Connessioni espandere hr_conn.
-
Nella lista dei tipi di oggetto schema espandere Pacchetti.
Viene visualizzata una lista di package.
-
Fare clic con il pulsante destro del mouse sull'elenco dei pacchetti da eliminare.
-
Nell'elenco di opzioni, fare clic su Elimina package.
-
Nella finestra Rilascia fare clic su Applica.
-
Nella finestra Conferma, fare clic su OK.
Vedere anche: Oracle Database PL/SQL Language Reference per informazioni sull'istruzione DROP PACKAGE