powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как прокрутить реф-курсор в цикле ?
25 сообщений из 53, страница 2 из 3
Как прокрутить реф-курсор в цикле ?
    #33399989
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatalexПередавай не сам реф курсор, а номер курсора определенный с помощью того же dbms_sql и будет тебе счастьеБездумный гон пурги продолжается
Ты вопрос всё-таки прочитал бы.
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400243
Anatalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic AnatalexПередавай не сам реф курсор, а номер курсора определенный с помощью того же dbms_sql и будет тебе счастьеБездумный гон пурги продолжается
Ты вопрос всё-таки прочитал бы.

Я то прочитал. А ты подумай для чего это. Или мозгов не хватает? Просто не известна структура запроса. Ну и что. Обработай его с помощью dbms_sql. Или весь мир на ref cursor как таковой сошелся? Только он и трава не расти.
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400276
Anatalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
With PL/SQL8, you can now obtain information about the structure of the columns of your dynamic cursor. The DBMS_SQL.DESCRIBE_COLUMNS procedure obtains information about your dynamic cursor. Here is the header:

PROCEDURE DBMS_SQL.DESCRIBE_COLUMNS
(c IN INTEGER
,col_cnt OUT INTEGER
,desc_t OUT DBMS_SQL.DESC_TAB);

Parameters

c The pointer to the cursor.

col_cnt The number of columns in the cursor, which equals the number of rows defined in the PL/SQL table.

desc_t The PL/SQL table, which contains all of the column information. This is a table of records of type DBMS_SQL.DESC_REC (<table_type>), described below.

<table_type> Datatype Description
col_type BINARY_INTEGER Type of column described
col_max_len BINARY_INTEGER Maximum length of column value
col_name VARCHAR2(32) Name of the column
col_name_len BINARY_INTEGER Length of the column name
col_schema_name VARCHAR2(32) Name of column type schema if an object type
col_schema_name_len BINARY_INTEGER Length of schema name
col_precision BINARY_INTEGER Precision of column if a number
col_scale BINARY_INTEGER Scale of column if a number
col_charsetid BINARY_INTEGER ID of character set
col_charsetform BINARY_INTEGER Character set form
col_null_ok BOOLEAN TRUE if column can be NULL

The values for column types are as follows:

Datatype Number
VARCHAR2 1
NVARCHAR2 1
NUMBER 2
INTEGER 2
LONG 8
ROWID 11
DATE 12
RAW 23
LONG RAW 24
CHAR 96
NCHAR 96
MLSLABEL 106
CLOB (Oracle8) 112
NCLOB (Oracle8) 112
BLOB (Oracle8) 113
BFILE (Oracle8) 114
Object type (Oracle8) 121
Nested table Type (Oracle8) 122
Variable array (Oracle8) 123

When you call this program, you need to have declared a PL/SQL table based on the DBMS_SQL.DESC_T. You can then use PL/SQL table methods to traverse the table and extract the needed information about the cursor. The following anonymous block shows the basic steps you will perform when working with this built-in:

DECLARE
cur PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
cols DBMS_SQL.DESC_T;
ncols PLS_INTEGER;
BEGIN
DBMS_SQL.PARSE
(cur, 'SELECT hiredate, sal FROM emp', DBMS_SQL.NATIVE);
DBMS_SQL.DEFINE_COLUMN (cur, 1, SYSDATE);
DBMS_SQL.DEFINE_COLUMN (cur, 2, 1);
DBMS_SQL.DESCRIBE_COLUMNS (cur, ncols, cols);
FOR colind IN 1 .. ncols
LOOP
DBMS_OUTPUT.PUT_LINE (cols.col_name);
END LOOP;
DBMS_SQL.CLOSE_CURSOR (cur);
END;
/
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400304
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatalexИли весь мир на ref cursor как таковой сошелся?В постановке задачи - сошёлся. А решать незаданные задачи - это есть использование "мозгов, которых хватает"() для "пурги".
Чтобы отказаться от ref cursor в приёмнике, нужно также от него отказаться и в передатчике. Т.е. полный redesign. Сомневаюсь, что оно ему надо.

P.S. И не надо дампить килы доки
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400326
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatalexЯ то прочитал. А ты подумай для чего это. Или мозгов не хватает? Просто не известна структура запроса. Ну и что. Обработай его с помощью dbms_sql. Или весь мир на ref cursor как таковой сошелся? Только он и трава не расти.
1. Уважаемый, ну зачем же так грубо?
2. Решения проблемы у Вас нет, поскольку предложения отказаться от ref cursor Вы не вносили. Зато вносили предложение определить структуру ref cursor посредством dbms_sql... :)
3. "Весь мир", может, и не сошелся, но далеко не всегда можно обойтись передачей текста запроса. Например, если данные нужны в методе, который работает от имени другого пользователя... Или метод - поставщик данных используется в иных приложениях и не может быть изменен по соображениям совместимости или по условиям лицензионного соглашения.
4. Я не буду говорить про чуждые Вам концепции инкапсуляции, соображения сопровождаемости или хотя бы банальную безопасность (поищите по форуму sql injection).
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400353
Anatalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous AnatalexЯ то прочитал. А ты подумай для чего это. Или мозгов не хватает? Просто не известна структура запроса. Ну и что. Обработай его с помощью dbms_sql. Или весь мир на ref cursor как таковой сошелся? Только он и трава не расти.
1. Уважаемый, ну зачем же так грубо?
2. Решения проблемы у Вас нет, поскольку предложения отказаться от ref cursor Вы не вносили. Зато вносили предложение определить структуру ref cursor посредством dbms_sql... :)
3. "Весь мир", может, и не сошелся, но далеко не всегда можно обойтись передачей текста запроса. Например, если данные нужны в методе, который работает от имени другого пользователя... Или метод - поставщик данных используется в иных приложениях и не может быть изменен по соображениям совместимости или по условиям лицензионного соглашения.
4. Я не буду говорить про чуждые Вам концепции инкапсуляции, соображения сопровождаемости или хотя бы банальную безопасность (поищите по форуму sql injection).

А кто сказал, что нужно передавать текст запроса? Разве я такое говорил? Передавать нужно лишь указатель на курсор - его номер. Это вы не очень то въехали. Инкапсуляция здесь не при чем. Это первое.

А второе - гон пурги это когда говорят зделать ничего нельзя можешь только кол-во строк узнать. Я же предложил решение проблемы. А человек сам разберется, что ему нужно
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400448
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatalexА кто сказал, что нужно передавать текст запроса? Разве я такое говорил?Вообще-то именно так был воспринят Ваш пост с текстом процедуры. Рад, что Вы изменили мнение. Anatalex
А второе - гон пурги это когда говорят зделать ничего нельзя можешь только кол-во строк узнать. Я же предложил решение проблемы.РЕШЕНИЕ предложил DenisPopov. Ваши же посты - решение какой-то совсем другой задачи Anatalex А человек сам разберется, что ему нужно
А вот это уж обязательно. Лишь бы те, кто будет давать советы "после нас", не апеллировали потом к Вашим предложениям определять структуру ref cursor посредством dbms_sql
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400490
Anatalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous AnatalexА кто сказал, что нужно передавать текст запроса? Разве я такое говорил?Вообще-то именно так был воспринят Ваш пост с текстом процедуры. Рад, что Вы изменили мнение. Anatalex
А второе - гон пурги это когда говорят зделать ничего нельзя можешь только кол-во строк узнать. Я же предложил решение проблемы.РЕШЕНИЕ предложил DenisPopov. Ваши же посты - решение какой-то совсем другой задачи Anatalex А человек сам разберется, что ему нужно
А вот это уж обязательно. Лишь бы те, кто будет давать советы "после нас", не апеллировали потом к Вашим предложениям определять структуру ref cursor посредством dbms_sql

Если вы не поняли, так и не говорите. Я предлагал определить структуру курсора, неизвестной структуры с помощью dbms_sql для этого этот пакет и предназначен. Если вы хотите приплетать для этого яву, флаг вам в руки, но все эти вещи прекрасно решаются с помощью dbms_sql .
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400570
Sxak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВопросикВопрос знающим людям:

Как прокрутить реф-курсор в цикле, если неизвестна его структура ?
Если тебе только прокрутить то может быть сгодится делать всегда 1е поле типа нумбер и выводить его в 1? тогда просто отфетсишь сколько надо
то есть все крсоры делать 'select 1 fiktivnoje_pole, ....'
а потом вроде можно делать фетч только в 1е поле
fetch ref_cur into tmp
и пофингу что там есть что-то дальше
al Antalex: Ты не понял. Пакет dbms_sql не умеет работать с реф_курсорами и преобразование из одного типа в другой невозможно. Я на еот форум пришел как раз с таким вопросом Мне так ответили со ссылкой на какой-то буржуинский сайт. Если знаешь как - напиши
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400624
Anatalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sxak ВопросикВопрос знающим людям:

Как прокрутить реф-курсор в цикле, если неизвестна его структура ?
Если тебе только прокрутить то может быть сгодится делать всегда 1е поле типа нумбер и выводить его в 1? тогда просто отфетсишь сколько надо
то есть все крсоры делать 'select 1 fiktivnoje_pole, ....'
а потом вроде можно делать фетч только в 1е поле
fetch ref_cur into tmp
и пофингу что там есть что-то дальше
al Antalex: Ты не понял. Пакет dbms_sql не умеет работать с реф_курсорами и преобразование из одного типа в другой невозможно. Я на еот форум пришел как раз с таким вопросом Мне так ответили со ссылкой на какой-то буржуинский сайт. Если знаешь как - напиши

С реф курсорами он действительно не работает. Но можно определить ссылку на курсор любой структуры. Т.е. переменная будет не ref cursor. А будет ссылка (типа INTEGER) на курсор . С помощью этой ссылки в пакете dbms_sql можно из курсора получить все что угодно. Названия, типы, кол-во, значения полей и т.д. И эту ссылку можешь передавать куда угодно в пределах pl/sql из процедуры в процедуру пока курсор не закрыт. К какому полю какую переменную привязывать опять же можно динамически, типы то полей и их порядок определяются без проблем.
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400768
ten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatalexНо можно определить ссылку на курсор любой структуры. Т.е. переменная будет не ref cursor. А будет ссылка (типа INTEGER) на курсор . С помощью этой ссылки в пакете dbms_sql можно из курсора получить все что угодно.

Хочется присоединиться к желающим посмотреть реализацию этой идеи. Вообще то dbms.define_column и dbms.desribe_columns работают после разбора выполненного dbms.parse. А для этого надо знать текст запроса, который будете разбирать.
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400800
Anatalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ten AnatalexНо можно определить ссылку на курсор любой структуры. Т.е. переменная будет не ref cursor. А будет ссылка (типа INTEGER) на курсор . С помощью этой ссылки в пакете dbms_sql можно из курсора получить все что угодно.

Хочется присоединиться к желающим посмотреть реализацию этой идеи. Вообще то dbms.define_column и dbms.desribe_columns работают после разбора выполненного dbms.parse. А для этого надо знать текст запроса, который будете разбирать.

Так ведь, когда создается и открывается реф курсор его текст тоже известен. Почему вместо открытия реф курсора не распарсить его с помощью dbms_sql?
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #33400821
ten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопросик Как прокрутить реф-курсор в цикле, если неизвестна его структура ?
ты решаешь не ту задачу (см. со слов "чтобы отказаться от ref cursor...")
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как прокрутить реф-курсор в цикле ?
    #35721986
Ewg_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, не понял чем закончилось обсуждение темы.
столкнулся с проблемой аналогично автора темы, но немного проще:
процедуры возвращают открытые реф-курсоры.
можно ли узнать
а) нет ли там ошибки (ошибка будет на фетче, т.к. при открытии курсора запрос не выполняется)
б) число записей.
а фетч я сделать не могу, т.к. не знаю структуры

по описанию мне бы очень подошла функция DBMS_HS_PASSTHROUGH.FETCH_ROW
нет ли чего подобного для анализа Oracle-курсора ?

brant2000 получить данные из курсора неизвестной структуры в PL/SQL нельзя, только количество записей. и как ?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как прокрутить реф-курсор в цикле ?
    #39638164
ОкеанНадежды
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно ли без динамики открыть курсорную переменную из курсорА ?

что-то типа


open v_ref_dat for c_all_list;

, где c_all_list - описанный выше курсор

зачем надо?
результирующий набор селекта одинаковый, а немного различаются фильтры. Не хочется прям внутри блока прописывать, хотела в секции объявлений описать все вариантры курсоров, чтобы не прыгать потом по всей проге и искать
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638171
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОкеанНадеждыа можно ли без динамики открыть курсорную переменную из курсорА ?И с динамикой нельзя.
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638175
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicОкеанНадеждыа можно ли без динамики открыть курсорную переменную из курсорА ?И с динамикой нельзя.
????
https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#CHDJDGDG
ни разу не использовал, нужды не было. Но вроде по описанию то, что надо
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638183
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОкеанНадежды хотела в секции объявлений описать все вариантры курсоров, чтобы не прыгать потом по всей проге и искать
Покажите пожалуйста способ, которым Вы предполагаете выбирать конкретный вариант курсора.
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638186
ОкеанНадежды
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousОкеанНадежды хотела в секции объявлений описать все вариантры курсоров, чтобы не прыгать потом по всей проге и искать
Покажите пожалуйста способ, которым Вы предполагаете выбирать конкретный вариант курсора.

да он не работает,

я хотела что-то типа

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
-- цель- одну курсорную переменную открыть из разных запросов 
-- в зависимости от условий

-- желательно в команду открытия не передавать select  в виде плохо отлаживаемой текстовой строки
-- или огромного селекта посреди проги
declare
  cursor c is(
    select 1 from dual);
  cursor b is(
    select 2 from dual);

  n number;
  type t is ref cursor;
  t_cur t;
begin
  -- как-то манипулируем с n

  if n = 1 then
    open t for c;
  else
    open t for b;
  end if;

  loop
    fetch rc
      into < куда - нить записали >;
    exit when rc%notfound;
  end loop;

  close t;
end;
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638187
ОкеанНадежды
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой, только там не rc,а t разумеется
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638190
ОкеанНадежды
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее не t, а t_cur :))
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638192
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОкеанНадежды[src pl/sql] if n = 1 then
open t for c;
else
open t for b;
end if;
[/src]
В таком варианте все, что Вам надо, это объявить курсоры varchar2-переменными. :)
Проверку структуры возвращаемого результата можно оформить посредством объявления strong ref cursor.

Рассмотрите еще такой вариант:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
declare
  -- Атрибуты фильтра
  l_NumFilter1 number := 1;
  l_DateFilterStart date := date'2018-04-28';
  l_DateFilterStop date := date'2018-04-29';
  -- Общий курсор. Критически важно: каждый вариант запроса в списке union all 
  -- должен сравнивать значение _параметра с константой.
  -- это позволит оптимизатору отсекать (не выполнять) ненужные ветки плана.
  cursor c_common (p_variant varchar2) is  with t(id, dt_eventDate, num_Attr) as (select rownum, date'2018-04-25'+rownum, mod(rownum,10) from dual connect by level < 10)
      select * 
        from t 
       where p_variant = 'useDateFilterSet' 
         and dt_eventDate between l_DateFilterStart and l_DateFilterStop
    union all 
      select * 
        from t 
       where p_variant = 'useAttrFilterSet' 
         and num_Attr = l_NumFilter1
    ;
begin
  dbms_output.put_line('FilterSet1');
  for i in c_common ('useDateFilterSet') loop
    dbms_output.put_line(i.id||'. dt_eventDate='||to_char(i.dt_eventDate,'yyyy-mm-dd')||', num_Attr='||i.num_Attr);
  end loop;
  dbms_output.put_line('FilterSet2');
  for i in c_common ('useAttrFilterSet') loop
    dbms_output.put_line(i.id||'. dt_eventDate='||to_char(i.dt_eventDate,'yyyy-mm-dd')||', num_Attr='||i.num_Attr);
  end loop;
end;
/

FilterSet1
3. dt_eventDate=2018-04-28, num_Attr=3
4. dt_eventDate=2018-04-29, num_Attr=4
FilterSet2
1. dt_eventDate=2018-04-26, num_Attr=1
PL/SQL procedure successfully completed

SQL> 
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638193
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, есть еще один очевидный способ - варианты запроса можно оформить статикой посредством перегрузки функций, возвращающих курсор.
...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638205
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousИ да, есть еще один очевидный способ - варианты запроса можно оформить статикой посредством перегрузки функций, возвращающих курсор.
Например, так (ни разу не догма):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
declare
  l_NumFilter1 number := 7;
  l_DateFilterStart date := date'2018-04-28';
  l_DateFilterStop date := date'2018-04-29';

  -- Просто определим структуру записи
  -- Этот курсор НЕ используется для получения данных
  cursor c_rec is  with t(id, dt_eventDate, num_Attr1, num_Attr2) as (select rownum, date'2018-04-25'+rownum, rownum+1, rownum*7  from dual connect by level < 10)
      select * from t where 1=0
    ;
  type t_cur is ref cursor return c_rec%rowtype; -- Strong ref cursor позволяет легко обращаться к полям записи из PL/SQL 

  -- Перегруженные геттеры (варианты курсора)
  -- Первый параметр геттера - фейк, просто для выбора варианта перегруженной функции 
  -- если таких функций будет много, использовать одни только сочетания параметров для формирования уникальной сигнатуры 
  -- может оказаться неудобно.
  -- 1. По дате
  function get_dataset(by_DtRange number, p_dt_from date, p_dt_to date) return t_cur is
    l_cur t_cur;
  begin
    open l_cur for with t(id, dt_eventDate, num_Attr1, num_Attr2) as (select rownum, date'2018-04-25'+rownum, rownum+1, rownum*7  from dual connect by level < 10)
        select * from t where dt_eventDate between p_dt_from and p_dt_to
    ;
    return l_cur;
  end;

  -- 2. По атрибуту 1
  function get_dataset(by_Attr1 number, p_attr number) return t_cur is
    l_cur t_cur;
  begin
    open l_cur for with t(id, dt_eventDate, num_Attr1, num_Attr2) as (select rownum, date'2018-04-25'+rownum, rownum+1, rownum*7  from dual connect by level < 10)
        select * from t where num_Attr1 = p_attr
    ;
    return l_cur;
  end;

  -- 3. По атрибуту 2
  function get_dataset(by_Attr2 number, p_attr number) return t_cur is
    l_cur t_cur;
  begin
    open l_cur for with t(id, dt_eventDate, num_Attr1, num_Attr2) as (select rownum, date'2018-04-25'+rownum, rownum+1, rownum*7  from dual connect by level < 10)
        select * from t where num_Attr2 = p_attr
    ;
    return l_cur;
  end;

  -- Универсальный обработчик
  procedure process_dataset(p_dataset t_cur) is
    l_row c_rec%rowtype;
  begin
    if not p_dataset%isopen then return; end if;
    loop
      fetch p_dataset into l_row;
      exit when p_dataset%notfound;
      dbms_output.put_line(l_row.id||'. dt_eventDate='||to_char(l_row.dt_eventDate,'yyyy-mm-dd')||', num_Attr1='||l_row.num_Attr1||', num_Attr2='||l_row.num_Attr2);
    end loop;
    close p_dataset;
  end;
begin
  -- Зовем в разных вариациях.
  dbms_output.put_line('FilterSet1');
    process_dataset(get_dataset(by_DtRange=>1, p_dt_from=>l_DateFilterStart, p_dt_to=>l_DateFilterStop));

  dbms_output.put_line('FilterSet2');
    process_dataset(get_dataset(by_Attr1=>1, p_attr=>l_NumFilter1));

  dbms_output.put_line('FilterSet3');
    process_dataset(get_dataset(by_Attr2=>1, p_attr=>l_NumFilter1));
end;
/

FilterSet1
3. dt_eventDate=2018-04-28, num_Attr1=4, num_Attr2=21
4. dt_eventDate=2018-04-29, num_Attr1=5, num_Attr2=28
FilterSet2
6. dt_eventDate=2018-05-01, num_Attr1=7, num_Attr2=42
FilterSet3
1. dt_eventDate=2018-04-26, num_Attr1=2, num_Attr2=7
PL/SQL procedure successfully completed

...
Рейтинг: 0 / 0
Как прокрутить реф-курсор в цикле ?
    #39638213
ОкеанНадежды
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей, спасибо!


про varchar2 - писала выше, что не хотелось бы динамики. Второй вариант интересный :)

хотя у меня вообще-то пока всего 2 курсора на выбор, можно проще их просто в открытии переменной да и прописать
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 2 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как прокрутить реф-курсор в цикле ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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