Dans ma base de données, j'ai une procédure stockée avec un paramètre OUTPUT de type SYS_REFCURSOR. Le côté application est écrit en C#. Puis-je assigner le paramètre de sortie de cette procédure à un Datatable comme:Utilisation du paramètre ouput de type SYS_refcursor
.............
OracleConnection con=new OracleConnection(......);
OracleCommand cmd=new OracleCommand("MyStoredProc",con);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("REC_CUR",OracleType.Cursor).Direction=ParameterDirection.Output;
con.Open();
cmd.ExecuteNonQuery();
DataTable dt=(DataTable)cmd.Parameters["REC_CUR"].value;//is this legal?
Il convient de mentionner qu'il n'y a pas de conversion implicite de toute DataReader à DataTable (pas seulement OracleDataReader). La méthode 'DataTable.Load (IDataReader)' peut être utilisée à la place. par exemple. 'DataTable dt = new DataTable(); dt.Load ((OracleDataReader) cmd.Parameters ["REF_CUR"]. value); ' –
Assurez-vous de ne pas fermer votre objet de connexion tant que vous n'avez pas fini de lire les données ou de les charger dans un DataTable. Aucune exception n'est levée si votre DataReader est fermé lorsque vous appelez DataTable.Load. – Peter