Click here to Skip to main content
15,895,011 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more: , +
My task is to connect to a stored procedure in Oracle from an asp.net page. The procedure has an output parameter of type record. I am having a problem trying to get a return value from the procedure. And I have to populate a drop down list with the return value.
Any help will be really appreciated.

What I have tried:

string str = "User ID=username;Password=password;Data Source=Test";
OracleConnection conn = new OracleConnection(str);
OracleCommand cmd = new OracleCommand("stored_procedure_name", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("pv_look_up_code", "varchar2").Value = "HR";
cmd.Parameters.Add("pv_filter1", "varchar2").Value = null;
cmd.Parameters.Add("pv_filter2", "varchar2").Value = null;
cmd.Parameters.Add("pv_filter3, "varchar2").Value = null;
cmd.Parameters.Add("pv_user_id", "varchar2").Value = 1;
cmd.Parameters.Add("pv_app_code", "varchar2").Value = 1;

cmd.Parameters.Add("p_cur_list", "refcurser").Direction = ParameterDirection.InputOutput;
cmd.Parameters.Add("pn_error_code", "decimal").Direction = ParameterDirection.Output;
cmd.Parameters.Add("pv_err_text", "varchar2").Direction = ParameterDirection.IOutput;
cmd.Parameters.Add("pv_err_text_eng", "varchar2").Direction = ParameterDirection.Output;
OracleDataAdapter da = new OracleDataAdapter();

conn.Open();
da.SelectCommand = cmd;
DataSource ds = new DataSource();
da.Fill(ds);
Posted
Updated 8-Dec-16 4:58am
Comments
Wendelius 7-Dec-16 15:59pm    
What is the problem you're having?

Try below :

C#
using Oracle.DataAccess;
using Oracle.DataAccess.Client;

public DataTable GetHeader_BySproc(string unit, string office, string receiptno)
{
    using (OracleConnection cn = new OracleConnection(DatabaseHelper.GetConnectionString()))
    {
        OracleDataAdapter da = new OracleDataAdapter();
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = cn;
        cmd.InitialLONGFetchSize = 1000;
        cmd.CommandText = DatabaseHelper.GetDBOwner() + "PKG_COLLECTION.CSP_COLLECTION_HDR_SELECT";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("PUNIT", OracleDbType.Char).Value = unit;
        cmd.Parameters.Add("POFFICE", OracleDbType.Char).Value = office;
        cmd.Parameters.Add("PRECEIPT_NBR", OracleDbType.Int32).Value = receiptno;
        cmd.Parameters.Add("T_CURSOR", OracleDbType.RefCursor).Direction = ParameterDirection.Output;

        da.SelectCommand = cmd;
        DataTable dt = new DataTable();
        da.Fill(dt);
        return dt;
    }
}
 
Share this answer
 
Not sure if only a typo here or a typo in your project as well but...

If you had formatted properly, you would have found:
C#
string str = "User ID=username;Password=password;Data Source=Test";
OracleConnection conn = new OracleConnection(str);
OracleCommand cmd = new OracleCommand("stored_procedure_name", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("pv_look_up_code", "varchar2").Value = "HR";
cmd.Parameters.Add("pv_filter1", "varchar2").Value = null;
cmd.Parameters.Add("pv_filter2", "varchar2").Value = null;
cmd.Parameters.Add("pv_filter3, "varchar2").Value = null;
cmd.Parameters.Add("pv_user_id", "varchar2").Value = 1;
cmd.Parameters.Add("pv_app_code", "varchar2").Value = 1;

cmd.Parameters.Add("p_cur_list", "refcurser").Direction = ParameterDirection.InputOutput;
cmd.Parameters.Add("pn_error_code", "decimal").Direction = ParameterDirection.Output;
cmd.Parameters.Add("pv_err_text", "varchar2").Direction = ParameterDirection.IOutput;
cmd.Parameters.Add("pv_err_text_eng", "varchar2").Direction = ParameterDirection.Output;
OracleDataAdapter da = new OracleDataAdapter();

conn.Open();
da.SelectCommand = cmd;
DataSource ds = new DataSource();
da.Fill(ds); 


and it should be...
C#
string str = "User ID=username;Password=password;Data Source=Test";
OracleConnection conn = new OracleConnection(str);
OracleCommand cmd = new OracleCommand("stored_procedure_name", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("pv_look_up_code", "varchar2").Value = "HR";
cmd.Parameters.Add("pv_filter1", "varchar2").Value = null;
cmd.Parameters.Add("pv_filter2", "varchar2").Value = null;
cmd.Parameters.Add("pv_filter3", "varchar2").Value = null; // you were missing a quote here (after the 3)
cmd.Parameters.Add("pv_user_id", "varchar2").Value = 1;
cmd.Parameters.Add("pv_app_code", "varchar2").Value = 1;

cmd.Parameters.Add("p_cur_list", "refcurser").Direction = ParameterDirection.InputOutput;
cmd.Parameters.Add("pn_error_code", "decimal").Direction = ParameterDirection.Output;
cmd.Parameters.Add("pv_err_text", "varchar2").Direction = ParameterDirection.IOutput;
cmd.Parameters.Add("pv_err_text_eng", "varchar2").Direction = ParameterDirection.Output;
OracleDataAdapter da = new OracleDataAdapter();

conn.Open();
da.SelectCommand = cmd;
DataSource ds = new DataSource();
da.Fill(ds); 
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900