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

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

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

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

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

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

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

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

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

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

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

Мда, походу никто в мире не может разъяснить мне эту хрень.Попытайся читать все ответы. Может тогда дойдёт.
...
Рейтинг: 0 / 0
10.08.2016, 13:01:44
    #39289620
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
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
10.08.2016, 13:03:45
    #39289623
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
lalafaK790,

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

а еще раз
Код: plsql
1.
SQL> print :c
...
Рейтинг: 0 / 0
10.08.2016, 13:20:40
    #39289653
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
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
10.08.2016, 13:32:50
    #39289667
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
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
10.08.2016, 13:36:44
    #39289674
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
lalafaСкажем приложение JAVA выполняет запрос в оракл, этот запрос автоматически всегда будет реф курсором или бывает обычным?

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

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

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

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

я про это и имел ввиду :)
...
Рейтинг: 0 / 0
10.08.2016, 13:39:22
    #39289677
Глупый Телевизор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
stax..пользую REF CURSOR в PL/SQLПочему было принято решение использовать реф а не просто курсор?
...
Рейтинг: 0 / 0
10.08.2016, 13:42:09
    #39289681
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
stax..недавно появилась возможность с REF_CURSOR получить CURSOR и наоборoт
Я чего-то не знаю? Именно cursor, а не хендлер dbms_sql?
...
Рейтинг: 0 / 0
10.08.2016, 13:49:45
    #39289692
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
Глупый Телевизор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
10.08.2016, 13:56:23
    #39289698
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REF CURSOR что это и зачем.
K790stax..,

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

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

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


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


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