Ciao a tutti,
ho un problema urgente da risolvere
Da .Net devo chiamare una funzione contenuta in un package che ritorni una tabella da me definita.
Package:
CREATE OR REPLACE PACKAGE myPck AS
TYPE myRecord IS RECORD
(
IDPR NUMBER (12),
DESPR VARCHAR2 (40)
-- altri campi ...
);
TYPE myTable IS TABLE OF myRecord
INDEX BY BINARY_INTEGER;
FUNCTION Elabora(p_utente IN VARCHAR2)
RETURN myTable;
END myPck;
C# da applicativo .Net:
public List<Elenco> CallProc1(string idPr)
{
using (OracleConnection cn = new OracleConnection(this.ConnectionString))
{
List<Elenco> elenco = new List<Elenco>();
OracleCommand cmd = cn.CreateCommand();
cmd.CommandText = \"myPck.Elabora\";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter(\"IO_CURSOR\", OracleType.Cursor)).Direction = ParameterDirection.Input;
cmd.Parameters[0].Value = idPr;
/* qua forse manca qualcosa per dire che si tratta di una function ??? */
OracleDataReader reader;
cn.Open();
reader = command.ExecuteReader();
while (reader.Read())
{
/* saranno corrette le seguenti righe ??? */
Elenco ele = new Elenco();
ele.idPr = (int)reader[\"IDPR\"];
ele.DesPr = reader[\"DESPR\"].ToString();
elenco.Add(ele);
/**/
}
reader.Close();
}
return elenco;
}