In Oracle è possibile creare delle store procedure 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 definisco 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:
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 ;
/
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):

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.