Creare un package con store procedure in Oracle
In Oracle è possibile creare delle store procedure in PL/SQL racchiudendole in un package (un contenitore che raggruppa più store o meglio più oggetti).
Il package Oracle è composto da due parti, un header e un body. Nell'header si definisce la firma degli oggetti, mentre nel body si inserisce il corpo.
Nell'esempio seguente definisco una store procedure di nome PRODUCTS_GET contenuta nel package SGART_PKG nello schema SGART_SCHEMA.
Creo l'header:
oltre alla store ho definito anche il parametro T_CURSOR che userò per farmi ritornare il dataset.
Creo il body dove definisco il corpo della store procedure (nota la keyword BODY):
Il package Oracle è composto da due parti, un header e un body. Nell'header si definisce la firma degli oggetti, mentre nel body si inserisce il corpo.
Nell'esempio seguente definisco una store procedure di nome PRODUCTS_GET contenuta nel package SGART_PKG nello schema SGART_SCHEMA.
Creo l'header:
PL/SQL
CREATE OR REPLACE PACKAGE SGART_SCHEMA.SGART_PKG AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE PRODUCTS_GET (
P_COD IN VARCHAR2,
P_RESULTS OUT T_CURSOR);
-- eventuali altre definizioni
END SGART_SCHEMA.SGART_PKG ;
/
Creo il body dove definisco il corpo della store procedure (nota la keyword BODY):
PL/SQL
CREATE OR REPLACE PACKAGE BODY SGART_SCHEMA.SGART_PKG AS
PROCEDURE PRODUCTS_GET (
P_COD IN VARCHAR2,
P_RESULTS OUT T_CURSOR);
)
IS
BEGIN
OPEN P_RESULTS FOR
SELECT COD, DESCR
FROM MIOSCHEMA.MIATABELLA
WHERE COD = P_COD
ORDER BY COD;
END PRODUCTS_GET;
-- eventuali altri oggetti
END SGART_SCHEMA.SGART_PKG;
/
Nota l'istruzione OPEN P_RESULTS FOR subito prima della query di select e il ; (punto e virgola / semicolon) subito dopo la query.