Member 12892523 Ответов: 2

Как подключиться к процедуре oracle из ASP.NET


Моя задача-подключиться к хранимой процедуре в Oracle из asp.net страница. Процедура имеет выходной параметр типа record. У меня возникла проблема с попыткой получить возвращаемое значение из процедуры. И я должен заполнить выпадающий список возвращаемым значением.
Любая помощь будет очень признательна.

Что я уже пробовал:

string str = " идентификатор пользователя=имя пользователя;пароль=пароль;источник данных=тест";
Объекта oracleconnection соед = новый объекта oracleconnection(ул.);
OracleCommand cmd = new OracleCommand ("stored_procedure_name", conn);
УМК.CommandType = CommandType.Хранимая процедура;

УМК.Параметры.Добавить("pv_look_up_code", "varchar2").Значение = "ч";
УМК.Параметры.Добавить("pv_filter1", "varchar2").Значение = нуль;
УМК.Параметры.Добавить("pv_filter2", "varchar2").Значение = нуль;
УМК.Параметры.Добавить("pv_filter3, "varchar2").Значение = нуль;
УМК.Параметры.Добавить("pv_user_id", "varchar2").Значение = 1;
УМК.Параметры.Добавить("pv_app_code", "varchar2").Значение = 1;

cmd. Parameters.Add("p_cur_list", "refcurser").Направление = ParameterDirection.Операций ввода-вывода;
УМК.Параметры.Добавить("pn_error_code", "десятичное").Направление = ParameterDirection.Выход;
cmd. Parameters.Add("pv_err_text", "varchar2").Направление = ParameterDirection.Івыход;
cmd. Parameters.Add("pv_err_text_eng", "varchar2").Направление = ParameterDirection.Выход;
OracleDataAdapter da = новый OracleDataAdapter();

Коннектикут.Открыть();
да.Команды selectcommand = ЦМД;
DataSource ds = новый источник данных();
да.Заполнить(ДС);

Wendelius

В чем проблема, с которой вы столкнулись?

2 Ответов

Рейтинг:
1

yogeshCJ

Попробуйте ниже :

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;
    }
}


Рейтинг:
1

Nelek

Не уверен, что только опечатка здесь или опечатка в вашем проекте, но...

Если бы вы отформатировали правильно, вы бы нашли:

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); 


так и должно быть...
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);