powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Параметизированный курсор. В чем разница реализации?
20 сообщений из 20, страница 1 из 1
Параметизированный курсор. В чем разница реализации?
    #39260540
Герундий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В инструкции для формирования курсора cur1 используется ранее введённа и проинициализированная переменная.
Курсор cur2 - классический параметризированный.
Чем плох первый способ формирования курсора?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare
  param1 number:=1;
  cursor cur1 is select * from table where id=param1;
  cursor cur2(param2 table.id%type) is select * from table where id=param2; 
begin
  open cur1;
  close cur1;
  --?
  open cur2(param1);
  close cur2;
end;
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260545
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оба дерьмо
я так люблю
Код: sql
1.
2.
for rec in()
loop
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260547
Герундий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

Код: plsql
1.
2.
3.
for rec in() loop
rec.<column_name>
end loop



?
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260556
Герундий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понимаю, что если использовать хранимые объекты сервера, то есть хранимые процедуры, функции, пакеты. То параметизированный запрос уже хранится в откомпилированном виде и по сути просто принимает параметр и выполняется, то есть не тратится время на синтаксический разбор, так как в инструкции содержится ссылка на переменную внутри кода?
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260562
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герундий,

У меня oracle 11 и первый и второй курсор расположил в памяти за одним SQL_ID.
Т.е. для Oracle они идентичны.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260563
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

и даже for cc in () исполнилось с тем же sql_id :))
кстати, я тоже for предпочитаю. однако, иногда cursor лучше.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260568
Герундий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Egoр,

Я не вижу никаких преимуществ for перед явным курсором, кроме меньшей писанины.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260573
Egoр однако, иногда cursor лучше.а иногда хуже, очевиднец ты наш невероятный.
иначе бы на одну из форм забили.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260575
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГерундийЯ не вижу никаких преимуществ for перед явным курсором, кроме меньшей писанины.Именно так. Сокращение и структуризация текста.
Чего еще ради создавать в языке различные лексемы для одних и тех же функций.
For - это задание курсора, непосредственно в месте исполнения. А cursor - в разделе деклараций.
Поэтому for мне нравится больше - удобнее анализировать, непосредственно в месте использования.
Но cursor тоже полезен, когда его нужно использовать в нескольких местах, чтобы не дублировать код.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260576
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герундийкроме меньшей писанины.существенно меньшей, если сравнивать близкую по эффективности писанину.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260580
Герундий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Герундийкроме меньшей писанины.существенно меньшей, если сравнивать близкую по эффективности писанину.

Если только один рекордсет не нужен на разных участках кода. Набрал один раз и бегаешь по нему.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260583
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГерундийЯ правильно понимаю, что если использовать хранимые объекты сервера, то есть хранимые процедуры, функции, пакеты. То параметизированный запрос уже хранится в откомпилированном виде и по сути просто принимает параметр и выполняется, то есть не тратится время на синтаксический разбор, так как в инструкции содержится ссылка на переменную внутри кода?Неправильно.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260606
Герундий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

ТО есть на уровне исполнения все идентично?
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260636
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГерундийТО есть на уровне исполнения все идентично?Для пытливых умов есть различные трассировки.
Непытливым "оптимизацией" заниматься рановато.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260638
Герундий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicГерундийТО есть на уровне исполнения все идентично?Для пытливых умов есть различные трассировки.
Непытливым "оптимизацией" заниматься рановато.

Зрите в корень, спасибо, все понятно)
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260659
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герундийзапрос уже хранится в откомпилированном видеК запросу неприменимо понятие компиляции. Это не хранимый код.
При обработке запроса есть фазы parse, fetch, execute.
А parse в свою очередь состоит из синтакстического анализа, семантического анализа и построения плана.
К чему я это все... первые две этапа parse для курсоров в коде выполняются при компиляции, а построение плана нет.
То есть пакет станет инвалидным если объявить в нем синтаксически некорректный текст курсора или использовать в нем несуществюущие таблицы, но спокойно можно скомпилировать что-то вроде.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
declare
  cursor cur1 is select object_name, subobject_name, count(*) from user_objects1 group by object_name;
begin
  --open cur1;
  --close cur1;

  null;
end;
/
Пока не попытаешься это выполнить не узнаешь, что запрос некорректный.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260710
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арраы фетц булковичEgoр однако, иногда cursor лучше.а иногда хужепростите, Балк Коллектович, уточните, пожалуйста, когда именно явный курсор хуже.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260720
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--арраы фетц булковичпропущено...
а иногда хужепростите, Балк Коллектович, уточните, пожалуйста, когда именно явный курсор хуже.когда в fetch не указан bulk collect into, а строк больше одной. И, ввиду большей универсальности, можно предположить, что накладные расходы на рукоблудные итерации по курсору чуточку дороже сокрытых за for-loop. Да еще, эти итерации отягощены необходимостью цикла по коллекции.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39260722
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--,

for loop c 10-ки фетчит пачками по 100 строк (до этого вроде было построчно)
с явным определением можно зафетчить все сразу

Походи по ссылкам из поста и далее 18647312
В oracle magazine и white papers куча инфы по этому поводу.

На практике большинство использует for loop и не парится.
...
Рейтинг: 0 / 0
Параметизированный курсор. В чем разница реализации?
    #39261409
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня тут одно дарование убеждало, что если в for loop insert, update или delete по одной табе, то мол oracle переписывает его на forall в довесок к фетчу по 100
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Параметизированный курсор. В чем разница реализации?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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