Данные не могут быть загружены в сетку с использованием хранимой процедуры Oracle - PullRequest
0 голосов
/ 30 июня 2019

Я создал хранимую процедуру для выбора информации об отделе из таблицы department и вызова ее из C #, но данные не загружаются в представление таблицы данных.

Эта процедура версии Oracle 11G, и это мой код SQL:

create or replace PROCEDURE PROCEDURE_SELECT_DEPARTMENT as c1
  SYS_REFCURSOR; 
BEGIN 
    OPEN c1 FOR 
        SELECT DEPARTEMENTID, DEPARTMENTNAME
        FROM TABLEDEPARTMENT; 
END;

А вот мой код C #:

OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["con"].ToString());

DataTable dt = new DataTable();

con.Open();

OracleCommand cmd = new OracleCommand("PPROCEDURE_SELECT_DEPARTMENT", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;

OracleDataAdapter da = new OracleDataAdapter(cmd);
da.Fill(dt);

GridView1.DataSource = dt;
GridView1.DataBind();

Когда я загружаю свою сетку, данные не отображаются.

1 Ответ

2 голосов
/ 30 июня 2019

процедура определена неправильно, хотя ее синтаксис действителен. В таком виде переменная c1 является локальной для процедуры. Курсор открывается, но с этим ничего не поделаешь. Вы должны определить c1 как выходной параметр процедуры.

create or replace procedure 
procedure_select_department(c1 out sys_refcursor)
as  
begin 
    open c1 for 
        select departementid, departmentname
        from tabledepartment; 
end;

Теперь это вернет курсор к вашей программе. К сожалению, я плохо понимаю c # и не знаю, как вам нужно изменить оператор для вызова процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...