Search code examples
c#oracle-databasestored-proceduresoracle-manageddataaccess

How do I call Oracle function in c# which takes parameters and return records?


I have an Oracle function, which takes 3 parameters and return records which has four columns.

But I am getting an exception which is

ORA-06550: line 1, column 7:
PLS-00221: 'get_receipts' is not a procedure or is undefined

this is my code:

OracleConnection con = new OracleConnection(oracleDB);
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;

cmd.CommandText = "get_receipts";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter("p_store_num", store_num));
cmd.Parameters.Add(new OracleParameter("p_create_dt", create_date));
cmd.Parameters.Add(new OracleParameter("p_cc_last4", cc_last4));

OracleDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
    ResponseModel sample = new ResponseModel();

    sample.Field1 = dr.GetString(0);
    sample.Field2 = dr.GetString(1);
    sample.Field3 = dr.GetString(2);
    sample.Field4 = dr.GetString(3);

    response.Add(sample);
}

Solution

  • for oracle it is a little trickier

    you have to return the result set as a ref_cursor type from your procedure

    check this out

    https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/oracle-ref-cursors