Sto lavorando da poco in ambiente Oracle e per quanto riguarda la creazione di stored procedure se ne occupano altre figure in azienda.
Per eseguire una stored procedure ho utilizzato il seguente codice (vb.net, spero non abbia difficoltà nel tradurlo altrimenti ti aiuto volentieri io):
codice:
With cmdStoredProc
.Connection = cn
.CommandText = "NOMEPROCEDURA"
.CommandType = CommandType.StoredProcedure
Dim oPar As OracleParameter = New OracleParameter
oPar.Direction = ParameterDirection.Input
oPar.ParameterName = "Par1"
oPar.OracleDbType = OracleDbType.Varchar2
.Parameters.Add (oPar)
oPar = New OracleParameter
oPar.Direction = ParameterDirection.Output
oPar.ParameterName = "Par2"
oPar.OracleDbType = OracleDbType.RefCursor
.Parameters.Add(oPar)
End With
(perdona la formattazione, ma sto facendo copia/incolla dal mio progetto)
Poi tutto l'ambaradan lo dai in pasto all'oracle datareader in maniera canonica sfruttando quindi il codice che hai già scritto tu.
Note importanti:
1) devi chiamare la stored procedure senza specificare i parametri. Nel tuo caso quindi .CommandText = "Dbms_Output.put_line" e stop;
2) oltre al parametro di input devi specificare il parametro di output ossia il cursore che la stored procedure estrae. Le mie stored procedure sono costruite nel seguente modo:
codice:
PROCEDURE NOMEPROCEDURA (I_PARAMETRO1 IN VARCHAR2, O_RESULT_SET OUT CURSOR_TYPE) IS
BEGIN
OPEN O_RESULT_SET FOR
select field1, field2 from Table1
END;
spero di esserti stato utile.