powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / REF CURSOR что это и зачем.
25 сообщений из 40, страница 1 из 2
REF CURSOR что это и зачем.
    #39289485
lalafa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здр-те. Прочитал множество сайтов про это, но так и ничего не понял, везде пишут по разному. В голове все запуталось. Никто не мог бы доходчиво объяснить разницу между REF CURSOR и обычным CURSOR?

Если я вызываю обычный курсор с pl/sql developera, то значит мне на клиент приходит вся таблица целиком?
А если я вызываю реф курсор, то приходит та же таблица, но не сразу целиком, а по одной строчке, экономя память на моем ПК?
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289495
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaЗдр-те. Прочитал множество сайтов про это, но так и ничего не понял, везде пишут по разному. В голове все запуталось. Никто не мог бы доходчиво объяснить разницу между REF CURSOR и обычным CURSOR?

Если я вызываю обычный курсор с pl/sql developera, то значит мне на клиент приходит вся таблица целиком?
А если я вызываю реф курсор, то приходит та же таблица, но не сразу целиком, а по одной строчке, экономя память на моем ПК?
это, типа, прочитал много надписей на многи я заборах..?

разница между ref и обычным - в приставке ref
вот создали вы курсор, дальше остаётся дёрнуть за верёвочку - данные из него и вам повалятся.
а можно за верёвочку не дёргать, а отдать её (верёвочку) соседу и пусть дёргает, когда и если захочет..
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289502
lalafa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну тогда Оракл зря его разработал, если можно обойтись самому (дергать за веревочку). А зачем мне давать веревочку кому то? Я захочу получить данные, а тот другой не будет дергать и я буду вечно ждать.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289529
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaНу тогда Оракл зря его разработал, если можно обойтись самому (дергать за веревочку). А зачем мне давать веревочку кому то? Я захочу получить данные, а тот другой не будет дергать и я буду вечно ждать.
вы не поняли (я не справился )

ждать бесполезно с того времени , когда вы верёвочку отдали (и потому бесполезно, что отдали )

можно конечно и сделать для себя, но смысл этой хрени техники - коммуникациях_ между ..,
ведь и вы в_другом_приложении это уже не вполне тот_же_вы
а замысел - чтобы не гонять (по кругу) пургу вагонами

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

Путаница в том, что и одно и другое это грубо говоря указатель на запрос (более точно указатель на private SQL area содержащая информацию про конкретный запрос).

cursor ипользуют в PL/SQL, ref cursor используют если результат запроса надо обработать в клиентском приложении.
cursor невозможно передать на клиент, ref cursor же можно зафетчить в PL/SQL, но это извращение.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289584
lalafa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Что за замысел? В каких случаях его нужно использовать? А то, может я тут на работе могу ускорить формирование отчетов, сам того не подозревая.
2) Какой смысл передавать этот курсор между разными клиентами? Если 1 клиент профетчил 100 записей, потом, передал другому клиенту, то этот клиент получит не полный набор данных, недоставать будет 100 записей.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289592
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafa,

потом, передал другому клиенту, то этот клиент получит не полный набор данных, недоставать будет 100 записей.
он уже не получит вообще никаких данных.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289601
lalafa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
K790,

Мда, походу никто в мире не может разъяснить мне эту хрень.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289607
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafa1) Что за замысел? В каких случаях его нужно использовать? А то, может я тут на работе могу ускорить формирование отчетов, сам того не подозревая.
2) Какой смысл передавать этот курсор между разными клиентами? Если 1 клиент профетчил 100 записей, потом, передал другому клиенту, то этот клиент получит не полный набор данных, недоставать будет 100 записей.
зачем - это правильный вопрос (так думаю)
вот пока не найдёте на этот вопрос разумного ответа, сабж вам не нужен
(и ваши предположения .. не попали )
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289618
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaK790,

Мда, походу никто в мире не может разъяснить мне эту хрень.Попытайся читать все ответы. Может тогда дойдёт.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289620
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K790lalafa,

потом, передал другому клиенту, то этот клиент получит не полный набор данных, недоставать будет 100 записей.
он уже не получит вообще никаких данных.
c чего бы ето
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> var c REFCURSOR;
SQL> ed
Wrote file afiedt.buf

  1  declare
  2   r dept%rowtype;
  3  begin
  4   open :c for 'select * from dept';
  5   fetch :c into r;
  6   fetch :c into r;
  7* end;
SQL> /

PL/SQL procedure successfully completed.

SQL> print :c

    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON



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

Мда, походу никто в мире не может разъяснить мне эту хрень.
на уровне идеи (замысла) всё примитивно
приложение приложению может передать или мешок/вагон/.. данных или ссылку с инструкцией "возьми сам"
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289638
lalafa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажем приложение JAVA выполняет запрос в оракл, этот запрос автоматически всегда будет реф курсором или бывает обычным?
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289647
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaСкажем приложение JAVA выполняет запрос в оракл, этот запрос автоматически всегда будет реф курсором или бывает обычным?java ничего не знает про "обычные" курсоры
cursor невозможно передать на клиентНаверное никто в мире не сможет _тебе_ это объяснить, да.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289649
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaСкажем приложение JAVA выполняет запрос в оракл, этот запрос автоматически всегда будет реф курсором или бывает обычным?
могу предположить, что никогда,
но всё зависит от автора (тут уж как вам повезёт )
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289650
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..,

а еще раз
Код: plsql
1.
SQL> print :c
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289653
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaЗдр-те. Прочитал множество сайтов про это, но так и ничего не понял, везде пишут по разному. В голове все запуталось. Никто не мог бы доходчиво объяснить разницу между REF CURSOR и обычным CURSOR?

Если я вызываю обычный курсор с pl/sql developera, то значит мне на клиент приходит вся таблица целиком?
А если я вызываю реф курсор, то приходит та же таблица, но не сразу целиком, а по одной строчке, экономя память на моем ПК?
неправильно

імхо
грубо
"обычный" CURSOR ето некоторая управляющая структура в памяти
REF CURSOR ето ссылка на "обычный CURSOR"


в древних версиях REF CURSOR не было

для чего сделали,
1) для передачи как параметр
напр FUNCTION f(cur_app ref_cursor) RETURN ...
в ф-цію передается ссылка(адрес) на курсор

2)упрощается использование "динамических курсоров"

недавно появилась возможность с REF_CURSOR получить CURSOR и наоборoт

где-то так


ps
отношусь к категории извращенцев, пользую REF CURSOR в PL/SQL
.....
stax
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289667
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K790stax..,

а еще раз
Код: plsql
1.
SQL> print :c


Код: 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.
SQL> print :c

    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> var c
variable   c
datatype   REFCURSOR
SQL> print c
SP2-0625: Error printing variable "c"
SQL> ed
Wrote file afiedt.buf

  1  declare
  2   r dept%rowtype;
  3  begin
  4   if :c%isopen then
  5     dbms_output.put_line('Open');
  6   else
  7     dbms_output.put_line('close');
  8   end if;
  9* end;
SQL> /
close

PL/SQL procedure successfully completed.

SQL>



....
stax
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289674
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lalafaСкажем приложение JAVA выполняет запрос в оракл, этот запрос автоматически всегда будет реф курсором или бывает обычным?

імхо
"обычный" курсор создается всегда
нельзя достучаться к табличкам не открыв курсор

так понятнее?

на сишке не кодировали?

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

я про это и имел ввиду :)
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289677
Глупый Телевизор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..пользую REF CURSOR в PL/SQLПочему было принято решение использовать реф а не просто курсор?
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289681
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..недавно появилась возможность с REF_CURSOR получить CURSOR и наоборoт
Я чего-то не знаю? Именно cursor, а не хендлер dbms_sql?
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289692
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый Телевизорstax..пользую REF CURSOR в PL/SQLПочему было принято решение использовать реф а не просто курсор?
Ну, к примеру, если мсье желает распараллелить pipelined, то ему придется пользовать ref cursor, причем если данные имеют межстрочные зависимости - то strong ref cursor.

Еще вариант - конвейер из pipelined (тафтология, но тем не менее):
Код: plsql
1.
select * from table(filter1(cursor(filter2(cursor(filter3(cursor(select * from dual)))))))



Или другой воздушный мсье пишет приложение на java (или на C), но тексты запросов ему писать не доверяют злобные ораклоиды.
Говорят - позови функцию x и она отдаст тебе открытый курсор, с которым и работай.
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289698
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K790stax..,

я про это и имел ввиду :)
специфика print-а он закрыл курсор

я отвечал на
авторон уже не получит вообще никаких данных.
если курсор не закрыт или профетчены не все строки
то другой клиент какіе-то данные получит

.....
stax
...
Рейтинг: 0 / 0
REF CURSOR что это и зачем.
    #39289701
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глупый Телевизорstax..пользую REF CURSOR в PL/SQLПочему было принято решение использовать реф а не просто курсор?
я ж написал
1) передача дальше как параметр
2) динамические


......
stax
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / REF CURSOR что это и зачем.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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