In this post you will see how to use the .NET Managed Provider for Oracle to pass an input parameter to retrieve a Ref Cursor from an Oracle stored procedure
(Donwload Oracle Data Access Components) http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html
Procedure
1 2 3 4 5 6 7 | CREATE OR REPLACE Procedure refSP(p_orders OUT sys_refcursor) AS BEGIN open p_orders for select * from orders; END |
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | static void Main(string[] args) { try { String connString = "User Id=yourId;Password=yourPass;Data Source=oracle"; OracleConnection conn = new OracleConnection(connString); conn.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.CommandText = "refSP"; OracleParameter oraP = new OracleParameter(); oraP.OracleDbType = OracleDbType.RefCursor; oraP.Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add(oraP); OracleDataReader reader = cmd.ExecuteReader(); ; while (reader.Read()) { Console.WriteLine(reader.GetValue(0).ToString()); Console.WriteLine(reader.GetValue(1).ToString()); } reader.Close(); } catch (OracleException ex) { } Console.ReadLine(); } |