powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как работать с курсорной переменной
3 сообщений из 3, страница 1 из 1
Как работать с курсорной переменной
    #38059415
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть хранимая процедура Oracle
В один из параметров на выходе записывае курсор.
В проекте я вызываю эту процедуру и этот курсор загружаю в datatable.
Вопрос в том, как дальше пройтись про по колонкам которые вернет курсор и чтобы проанализировать их.
Если присвоить его в качестве источника данных для GridVeiw, то все нормально отображается без ошибок.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
            int res = 0;
            System.Data.OracleClient.OracleConnection oraConn = new System.Data.OracleClient.OracleConnection(*****)
            System.Data.OracleClient.OracleCommand oracmd = new System.Data.OracleClient.OracleCommand "DS_PRODUCT.CURSOR_GET_ANALIZ", oraConn);
            oracmd.CommandType = System.Data.CommandType.StoredProcedure;

            System.Data.OracleClient.OracleParameter returnParam = new System.Data.OracleClient.OracleParameter()
            {
                ParameterName = "c_load",
                Direction = System.Data.ParameterDirection.Output,
                OracleType = OracleType.Cursor
            };
            oracmd.Parameters.Add(returnParam);
            
            res = oracmd.ExecuteNonQuery();
            System.Data.DataTable table = new System.Data.DataTable();
            table.Load(oracmd.Parameters["c_load"].Value as OracleDataReader);

            GridView gw = new GridView();
                        gw.DataSourceID = "";
                        gw.DataSource = table;
                        gw.DataBind();
            Panel1.Controls.Add(gw);


Так все работает нормально, но мне не надо выводь курсор в грид, и на странице его показывать, мне желательно в дата сет, и чтоб можно было по нему в цикле ходить

Что-то типо такого:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
res = oracmd.ExecuteNonQuery();
System.Data.DataTable table = new System.Data.DataTable();
table.Load(oracmd.Parameters["c_load"].Value as OracleDataReader);
String val = "";
for (int i = 0; i <= table.Rows.Count; i++)
{
     for (int j = 0; j <= table.Rows.Count; j++)
         {
           val = table.Rows[i].ItemArray[j].ToString();
           ....
          }
.....
}


Но так не работает table.Rows.Count = 0
...
Рейтинг: 0 / 0
Как работать с курсорной переменной
    #38059541
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как работать с курсорной переменной
    #38065791
xaly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВ, спасибо за наводку, хоть и не пригодились предлагаемые варианты в примерах, все равно полезно почитать MSDN

Решение найдено:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  System.Data.DataTable table = new System.Data.DataTable();
  table.Load(oracmd.Parameters["c_load"].Value as OracleDataReader); // из ораклой курсорной переменной загружаю в DataTable 

   DataRow[] rows = table.Select("r>0"); // выбираю все строки, удов-ие условию в кавычках, в моем случае  это все строки
   
   string var1 = ""; 
   string var2 = "";
   foreach (DataRow row in rows) // цикл по строкам
      {
            var1 = row.ItemArray[0].ToString();
            var2 = row.ItemArray[2].ToString();
            ...............
            .......................................
       }
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как работать с курсорной переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]