powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / REF CURSOR что это и зачем.
15 сообщений из 40, страница 2 из 2
REF CURSOR что это и зачем.
    #39289726
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

Вопрос был конкретному месье из Львова.
Теперь вопрос "что у него за архитектура, что приходится передавать курсоры как параметры", но это уже не так интересно.
Во-первых можно использовать глабальные "обычные" курсоры, а во-вторых было бы желание, нагородить можно все что угодно.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289733
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousstax..недавно появилась возможность с REF_CURSOR получить CURSOR и наоборoт
Я чего-то не знаю ? Именно cursor, а не хендлер dbms_sql?
не может такого быть
хендлер

DBMS_SQL.TO_CURSOR_NUMBER)
DBMS_SQL.TO_REFCURSOR


ps
я курсоры открытые с помощью DBMS_SQL причислил к "обычным" курсорам

.....
stax
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289746
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый Телевизорandrey_anonymous,

Вопрос был конкретному месье из Львова.
Теперь вопрос "что у него за архитектура, что приходится передавать курсоры как параметры", но это уже не так интересно.
Во-первых можно использовать глабальные "обычные" курсоры, а во-вторых было бы желание, нагородить можно все что угодно.

пример
1)
ф-ция
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
FUNCTION f(p_w  int) RETURN sys_refcursor is
...
  begin
   case when p_w =0 ... then 
        open cur_app for t... ;
   case when p_w =1 ... then 
        open cur_app for t_a... ;
   else
        open cur_app for dual ... ;
   end;
return cur_app;




2) динамический, для меня проще чем через dbms_sql

3) в ХМЛ (я не пользую,но коллеги да)

и тд (уже привели table(cursor)

зы
однозначно можно обойтись и без реф курсора, раньше ж обходились, но зачем?

....
stax
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289758
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..Глупый Телевизорandrey_anonymous,

Вопрос был конкретному месье из Львова.
Теперь вопрос "что у него за архитектура, что приходится передавать курсоры как параметры", но это уже не так интересно.
Во-первых можно использовать глабальные "обычные" курсоры, а во-вторых было бы желание, нагородить можно все что угодно.

пример
1)
ф-ция
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
FUNCTION f(p_w  int) RETURN sys_refcursor is
...
  begin
   case when p_w =0 ... then 
        open cur_app for t... ;
   case when p_w =1 ... then 
        open cur_app for t_a... ;
   else
        open cur_app for dual ... ;
   end;
return cur_app;




2) динамический, для меня проще чем через dbms_sql

3) в ХМЛ (я не пользую,но коллеги да)

и тд (уже привели table(cursor)

зы
однозначно можно обойтись и без реф курсора, раньше ж обходились, но зачем?

....
stax1. И функция потом вызывается в PL/SQL? Выбор в пользу реф курсор сделан из-за желания НЕ создавать конкретные типы для результата или есть еще причины?
2. Речь про dsql method 4 или какие-то еще причины? Есть же еще execute immediate. Ну и возможность задавать в обычном курсоре произвольный стейтмент строкой.
3. Про что речь? Про возможность читать данные из реф курсор с помощью xml? Или что-то еще? Про проблемы с производительностью при таком подходе я, надеюсь, коллегам изветсно.

зы
Как обойтись без реф курсор при возврате данных на клиет?
Скажем, если речь про Оракл 7 когда нет ни XML, ни пайплайнов, ни коллекций.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289770
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый ТелевизорСкажем, если речь про Оракл 7Глупый довод. Архаически глупый.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289780
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

зы было ответом на зы
Интересно как обходились раньше.
Остальное пронумеровано в соответствии с исходными тезисами.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289781
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Глупый Телевизор]stax..пропущено...
1. И функция потом вызывается в PL/SQL? Выбор в пользу реф курсор сделан из-за желания НЕ создавать конкретные типы для результата или есть еще причины?
2. Речь про dsql method 4 или какие-то еще причины? Есть же еще execute immediate. Ну и возможность задавать в обычном курсоре произвольный стейтмент строкой.
3. Про что речь? Про возможность читать данные из реф курсор с помощью xml? Или что-то еще? Про проблемы с производительностью при таком подходе я, надеюсь, коллегам изветсно.

зы
Как обойтись без реф курсор при возврате данных на клиет?
Скажем, если речь про Оракл 7 когда нет ни XML, ни пайплайнов, ни коллекций.

1) по разному, вплоть до формсов
2)
a)dbms_sql для меня неудобний
б)как Вы используете execute immediate напр когда надо обработать сотни тысяч строк?
3) я не пользую ХМЛ (к сожленью), другие да

ЗЫ
нет в 7-м реф курсора, и передавать курсор между клиентами не получится
по крайней мере я не знаю как

......
stax
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289788
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый ТелевизорКак обойтись без реф курсор при возврате данных на клиет?
Обычным курсором, открытым самим клиентом - уже никак?

stax..нет в 7-м реф курсора
7.3.4 - вроде как был...
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289790
lalafa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если в ранних версиях в оракле не было рефКурсора, то тогда как сторонние приложения делали выборку из базы данных?
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289792
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289796
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..как Вы используете execute immediate напр когда надо обработать сотни тысяч строк?Можно предварительно запихать сотни тысяч в PGA коллекции.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare
   n sys.odcinumberlist;
   v sys.odcivarchar2list;
begin
   execute immediate 'select 100 n, ''str'' v from dual connect by rownum <= 10' bulk collect into n, v;
   for i in 1 .. n.count
   loop
      dbms_output.put_line(n(i) || ' ' || v(i));
   end loop;
end;

Как я понял речь не про method 4.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289806
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicstax..нет в 7-м реф курсораRTFM Oracle7 Release 7.3.4. PL/SQL User's Guide and Reference: Using Cursor Variables (FAQ)
значит я забыл
раз забил то
1) пользовался очень редко
2) вообще не использовал sys_refcursor
3) моя феритовая память сбоит

п3 найболее вероятен

в шестом точно не было

.....
stax
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289809
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый Телевизорstax..как Вы используете execute immediate напр когда надо обработать сотни тысяч строк?Можно предварительно запихать сотни тысяч в PGA коллекции.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare
   n sys.odcinumberlist;
   v sys.odcivarchar2list;
begin
   execute immediate 'select 100 n, ''str'' v from dual connect by rownum <= 10' bulk collect into n, v;
   for i in 1 .. n.count
   loop
      dbms_output.put_line(n(i) || ' ' || v(i));
   end loop;
end;

Как я понял речь не про method 4.

на выборках больше тысчи я так не делал (за редким исключением)

dbms_sql не люблю независимо от 4
.....
stax
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289811
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaЕсли в ранних версиях в оракле не было рефКурсора, то тогда как сторонние приложения делали выборку из базы данных?
Еще раз, меедленно:

- Единственным (!) способом (имеется ввиду штатно - DUL, HexEditor, CDC и подобное пока что в расчет не берем :)) получить датасет от Oracle RDBMS является механизм, доступ к которому осуществляется посредством курсора.
- Курсор может быть открыт разработчиком явно, а может быть открыт неявно тем инструментом, который осуществляет взаимодействие с БД, но он БУДЕТ ОТКРЫТ.

- Ref Cursor - это ссылка на курсор, которая может быть использована для передачи управления открытым курсором от кода, курсор открывшего, некоторому другому коду. В частности - от серверного кода коду клиентскому.

- Будучи ссылкой, Ref Cursor может быть присоединен к курсору, возвращающему даднные любой структуры, что позволяет частично обойти ограничения синтаксиса PL/SQL и дает дополнительный механизм для организации DSQL в PL/SQL . Джава и прочие си не нуждаются в Ref Cursor для организации DSQL, им и обычного курсора для этих целей более чем достаточно.

- Для того, чтобы Ref Cursor можно было надежно обрабатывать в PL/SQL как обычный курсор - его тоже можно типизировать . Типизированный Ref Cursor называется STRONG Ref Cursor, нетипизированный - соответственно, weak.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289877
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaЕсли в ранних версиях в оракле не было рефКурсораЛибо автор вброса говорил о версиях до появления серверного plsql, то есть plsql-ный тип просто неприменим. Либо имел ввиду, что не было sys_refcursor, но это не мешало объявлять и использовать ref cursor. Просто дополнительная строчка объявления типа в пользовательских пакетах с 9й версии больше не необходима, так как получила стандартное публичное имя.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / REF CURSOR что это и зачем.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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