fa
Feedback
Oracle Developer👨🏻‍💻

Oracle Developer👨🏻‍💻

رفتن به کانال در Telegram

🔝 канал о разработке в СУБД Oracle: SQL, PL/SQL, оптимизация, архитектура и другое... Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ. Основатель: @denis_dbd Кивилёв Денис Менеджер: @love_flowerrr Влада

نمایش بیشتر
3 402
مشترکین
+124 ساعت
+47 روز
+7530 روز
آرشیو پست ها
پیام ویدیو00:58

پیام ویدیو00:23

Начинаем через 10 минут! 👉 ПРИСОЕДИНИТЬСЯ К ВЕБИНАРУ 👈

Коллеги, напоминаем, что вебинар по оптимизации Oracle SQL уже через час 🔥 На вебинаре будем учиться читать планы запросов,
Коллеги, напоминаем, что вебинар по  оптимизации Oracle SQL уже через час 🔥 На вебинаре будем учиться читать планы запросов, присоединяйтесь, будет мегаполезно 😉  👉👉 ССЫЛКА НА ЭФИР 👈👈 #вебинар #Оптимизация Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

پیام ویدیو00:48

پیام ویدیو00:52

Вебинар по оптимизации Oracle SQL уже завтра 🔥 Коллеги, всем привет! 👋 Завтра, 2 июля в 19:00 МСК, проведем вебинар по чтен
Вебинар по оптимизации Oracle SQL уже завтра 🔥 Коллеги, всем привет! 👋 Завтра, 2 июля в 19:00 МСК, проведем вебинар по чтению планов запросов в Oracle. Это не обзорная лекция - это концентрированная практика на 2-3 часа с разбором реальных кейсов. 👉 Если вы работаете с Oracle и хоть раз ловили себя на мысли "смотрю в план и вижу фигу", этот эфир именно для вас. Что разберём на вебинаре: 🔹 Что такое план запроса, какие виды бывают и зачем это знать в реальной работе - не в теории, а на живых примерах 🔹 Как правильно читать последовательность выполнения операций - это не так очевидно, как кажется большинству разработчиков 🔹 На какие колонки плана смотреть в первую очередь, а какие можно смело игнорировать 🔹 Разбор реальных кейсов: находим узкие места и объясняем, почему "вот здесь надо переписать" 🔹 Бонус, если останется время: сравним планы запросов Oracle и PostgreSQL ИЛИ как читать планы на 800 строк.
🧠 Умение читать планы - это не абстрактная теория, это нужно как на собеседованиях так и в реальной работе.
Приходите сами и зовите коллег, которые работают с Oracle или хотят разобраться в оптимизации SQL. Потом скажут спасибо 😉 Всем продуктивного вечера и до встречи на эфире! 🚀 #оптимизация_SQL #Oracle #базы_данных #вебинар #планы_запросов #обучение #карьера_в_IT Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Predicate Information - недооценённый блок 🔍 Друзья, всем привет! С вами Денис. Казалось бы, блок Predicate Information в плане выполнения - штука всем известная. Но на практике его реальную силу многие недооценивают. В новом видосе показал конкретный кейс (не выдуманный - взял прямо из нашего чатика 👇)
У Максима был запрос, и было не совсем очевидно, почему не работает секционирование. Хотя ключ секционирования участвует в предикатах. Именно блок Predicate Information дал ответ.
Вот как один блок в плане запроса может сэкономить вам часы отладки. И традиционно зову на бесплатный вебинар 🎓 📅 2-го числа - читаем и анализируем планы выполнения запросов в Oracle SQL Буду стараться сжать материал, но честно предупреждаю - часа на 2-3 зависнем точно 😄 Так что запасайтесь водичкой и приходите. Будет интересно 🔥🔥🔥 Всех жду 🤝 #oracle #sql #optimization #execution_plan #вебинар #Denis_Kivilev Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Анонс вебинара по оптимизации Oracle SQL 🔥 Коллеги, всем привет! 👋 2 июля в 19:00 МСК проведу вебинар по чтению планов запр
+5
Анонс вебинара по оптимизации Oracle SQL 🔥 Коллеги, всем привет! 👋 2 июля в 19:00 МСК проведу вебинар по чтению планов запросов в Oracle - концентрированная практика без воды, 2-3 часа реальных технических знаний. Что будет на вебинаре ❓ Ведущий - Денис Кивилев. Программа: 📚 Что такое планы запросов, какие виды бывают и зачем они нужны в реальной работе 🤩 Как правильно читать последовательность выполнения операций - это не так очевидно, как кажется 👨‍💻 На какие колонки в плане обращать внимание, а какие можно игнорировать 💡 Разбор реальных кейсов - применим знания на практике 🔷 Расскажу про курс по Оптимизации Если останется время и будет желание - сравним планы запросов в Oracle с PostgreSQL. ⚠️ Несмотря на сжатый формат, это реальная возможность прокачать навык, который постоянно нужен в работе. Умение читать планы запросов - это не абстрактная теория, а конкретный инструмент, который помогает находить узкие места, ускорять запросы и объяснять коллегам, почему "вот здесь надо переписать". Итак, коллеги, подытожим: 🗓 Вебинар пройдет 2 июля в 19:00 МСК - чтение планов запросов в Oracle. Ссылка будет опубликована в канале 🔗 Если вы хотите разобраться в планах запросов системно и с конкретными примерами - приходите на вебинар.🔥 Это 100% вам пригодится в работе или на собесе. Обязательно приглашайте коллег. Потом они вам спасибо скажут 😉 Всем продуктивной недели! 🚀 P.S. на скринах отзывы с предыдущих вебинаров и марафона #оптимизация_SQL #Oracle #базы_данных #вебинар #планы_запросов #обучение #карьера_в_IT Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

🔥ТОП ПОСТОВ за ИЮНЬ месяц, которые вы могли пропустить Коллеги, всем привет! 👋 Как и говорили ранее, каждое последнее воскр
🔥ТОП ПОСТОВ за ИЮНЬ месяц, которые вы могли пропустить Коллеги, всем привет! 👋 Как и говорили ранее, каждое последнее воскресенье месяца мы будем публиковать обзоры на наши посты. Хотим напомнить, что у нас на канале выходит очень много полезного и интересного материала, и вы 100% могли что-то пропустить. Обязательно делитесь постами с коллегами и друзьями! Впереди много интересного 🤗🔥 Посты про мок-собеседования и прочие темы ▫️ Мок-собеседование - это не экзамен. Это способ не провалить реальное интервью 🔥👌 ▫️ Денис, а ты сам то учишься? Рассказ об обучении, которое проходит Денис. ▫️ Старт 5-го потока по Секционированию. ▫️ Oracle будет жить🔥 ▫️ Рынок постепенно становится сеньорским ТЕХНИЧЕСКИЕ ПОСТЫ ▫️ Курсоры в Oracle ▫️ Миф: явный курсор работает быстрее неявного ▫️ Блок Column Projection Information в плане запроса ▫️ Что означает колонка Starts в плане выполнения? Информация о предстоящих мероприятиях: ▫️ Расписание вебинаров этим летом Коллеги, не забываем записываться на мок-собеседование, это отличная возможность «потренироваться» и проверить свои знания 🔥 Записаться можно у Влады. #обзорныепосты #топпостов Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Коллеги, всем привет! 👋 Сегодня пятница, а значит время расслабиться 🏝✨ Разбавим долгожданный конец рабочей недели пятничны
Коллеги, всем привет! 👋 Сегодня пятница, а значит время расслабиться 🏝✨ Разбавим долгожданный конец рабочей недели пятничным юмором, ставьте реакции 😄👏 Также напоминаем, что уже 2.07 в 19:00 МСК пройдет вебинар по анализу планов запросов 📊💻. Будем учиться читать планы запросов, ну и как всегда, будет моооре практики, не пропустите, всех ждём! 😉🚀 Ссылка на вебинар будет опубликована здесь 02.07, следите за анонсами 🔥🔗 Всем хороших выходных! 👍🌞

Что означает колонка Starts в плане выполнения? 🤔 Коллеги, всем привет! 👋 С вами Денис. Записал небольшое видео, где разбираю один из вопросов, который регулярно задаю на своих mock-собеседованиях по оптимизации Oracle. Казалось бы, простой вопрос:
Что означает колонка Starts в таблице операций?
Но именно на таких вопросах очень быстро становится понятно, человек действительно умеет читать планы запросов или просто выучил теорию или нахватался "по верхам". Одно дело - знать определения. Совсем другое - когда перед вами реальный план и нужно объяснить, что в нем происходит, почему именно так отработал оптимизатор и где искать проблему. Честно говоря, иногда мне самому кажется, что я задаю слишком простые вопросы. Но практика mock-собеседований показывает обратное - даже на такой базе многие начинают путаться. А ведь оптимизация - это один из ключевых навыков для Senior-разработчика. Если вы претендуете на сильные позиции, понимать планы выполнения нужно уверенно. Оптимизация - это ключ к Senior-позициям. Я нисколько не вру, помидоры в чате могут подтвердить 🍅 В видео как раз разбираю один из таких базовых вопросов. — 📅 И напоминаю, что уже в следующий четверг пройдет вебинар по анализу планов запросов. Будем учиться читать планы так, чтобы понимать, что реально происходит внутри Oracle, а не просто смотреть на красивые строчки. Забейте 19:00 02.07 в свой календарь и поставьте напоминалку 🔔 Если же хотите проверить себя в условиях, максимально приближенных к настоящему техническому интервью, всегда можно записаться ко мне на mock-собеседование. Разберем ваши сильные и слабые стороны, и я дам рекомендации, что стоит подтянуть ✅ Всем хорошего дня! 🤝 #oracle #sql #performance #executionplan #оптимизация #собеседование #senior #Denis_Kivilev Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Блок Column Projection Information в плане запроса 📺 Коллеги, всем привет! 👋 С вами Денис. В преддверии нашего вебинара по анализу планов запросов решил немного «разбудить ваш аппетит» и записал небольшое видео. Разбираем два важных блока в плане: Predicate Information и Column Projection Information. Если совсем кратко: 🔹 Predicate Information — это про то, как данные фильтруются (Filter) и как происходит доступ (Access). То есть «как мы ищем». 🔹 Column Projection Information — это про то, что операция отдает «наверх». Какие конкретно колонки и данные участвуют в процессе. Зачем это знать? Эти блоки — настоящая кладезь при глубоком анализе. Например, они помогают ответить на вопросы: ❓ Почему здесь не подцепился индекс, который я ждал? ❓ Почему не сработал Index Fast Full Scan? ❓ Какие колонки были лишними и «раздули» план? Посмотрите видео, там нагляднее. 🚀 И напоминаю: жду вас и ваших коллег на вебинаре 2-го июля. Как обычно, будет море практики, разберем хитрости и тонкости, о которых не пишут в учебниках. Залетайте, будет интересно! Бонусом думаю сравнить планы в Oracle и PG. Если это кому-нибудь надо, конечно 😉 Всем оптимальных планов и хорошего дня! 🤝 #oracle #sql #performance #tuning #план_запроса #оптимизация #вебинар #Denis_Kivilev Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Рынок постепенно становится «сеньорским» 📊 Коллеги, всем привет! 👋 Этот пост для Oracle-разработчиков, которые хотят понять
Рынок постепенно становится «сеньорским» 📊 Коллеги, всем привет! 👋 Этот пост для Oracle-разработчиков, которые хотят понять, куда движется рынок и что с этим делать. Ещё несколько лет назад компании охотно брали джунов, обучали их под себя и терпеливо ждали результата. Сейчас картина другая. 👉
По данным исследований (SuperJob, hh.ru) за первый квартал 2026 года: объём найма сократился на 20% год к году, а число резюме на рынке выросло на 34% по сравнению с аналогичным периодом 2025-го 
Конкуренция за вакансии растёт, а компании становятся всё более избирательными. Что именно меняется: 🔹 Джунов берут неохотно. Бизнес не хочет тратить 6-12 месяцев на «доращивание» - слишком дорого и рискованно в текущих условиях. 🔹 Мидлы без чёткой специализации теряются. «Умею всего понемногу» - уже не аргумент. Работодатель ищет того, кто закроет конкретную задачу с первого дня. 🔹 Сеньоры с глубокой экспертизой в Oracle - в дефиците. Таких специалистов мало, и спрос на них устойчив даже на фоне общего охлаждения рынка. Это не временный тренд. Рынок взрослеет: компании платят за результат, а не за потенциал. 🧠 Что это значит?  🧑‍🎓Если вы мидл - момент прокачаться до уверенного сеньора лучше, чем ждать, пока разрыв между вашим уровнем и требованиями рынка станет ещё больше. ⚠️ Конкретно: углубляйтесь в оптимизацию запросов, архитектуру БД, работу с большими объёмами данных, PL/SQL-паттерны. Это то, что реально отличает сеньора от мидла на собеседовании и в реальной работе. Если хотите системно закрыть пробелы и выйти на уровень уверенного Senior Oracle-разработчика - заполните анкету предзаписи на наш курс 👇 👉 ЗАПОЛНИТЬ АНКЕТУ 👈 Это вопрос вашей выживаемости в профессии. Нужно становится Senior-специалистом. Всем чистых запросов и стабильного прода! 🚀 #oracle #карьера_в_IT #базы_данных #рынок_труда #обучение #senior #PL_SQL Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Oracle будет жить 🔥 Коллеги, всем привет! 👋 Разговоры об уходе Oracle с российского рынка не утихают уже несколько лет. Но
Oracle будет жить 🔥  Коллеги, всем привет! 👋 Разговоры об уходе Oracle с российского рынка не утихают уже несколько лет. Но давайте смотреть на факты, а не на заголовки 🧐 👉 Реальность такова: огромный пласт критичных систем в России по-прежнему работает на Oracle - и никуда в ближайшее время не денется. Что происходит на самом деле: Да, импортозамещение идёт.
По данным Forbes, крупнейшие банки рассчитывают достичь 90% импортозамещения лишь к 2027 году. А по данным GlobalCIO, сам процесс займёт от 5 до 10 лет в зависимости от конкретных систем.
Это не абстрактные цифры. Это годы реальных проектов, поддержки, оптимизации и миграций - где нужны люди, которые глубоко понимают Oracle. 🔹 Там, где системы работают и приносят деньги, их не переписывают ради идеи. 🔹 Легаси на Oracle в банках, промышленности и госсекторе - это не технический долг, это действующий прод. 🔹 Специалистов, которые умеют с этим работать, на рынке меньше, чем открытых вакансий.
По данным Quick-Offer, Senior DBA с экспертизой в Oracle получает в среднем от 290 000 ₽. Потолок по прогнозам SuperJob - от 600 000 ₽ и выше
🧠 Парадокс момента: пока одни ждут, "когда Oracle совсем уйдёт", другие прокачивают экспертизу и становятся дефицитными специалистами именно на переходном периоде - самом длинном и самом оплачиваемом. 🔸 Oracle в России - это не прошлое, это настоящее ещё на много лет вперёд. 🔸 Переходный период создаёт спрос на тех, кто умеет оптимизировать и поддерживать существующие системы. 🔸 Прокачивать знания сейчас - значит быть востребованным именно тогда, когда рынок в этом больше всего нуждается. Простая связь: теперь рынок сеньерский, чтобы им быть - нужно знать оптимизацию. Как им стать? Прокачивать себя любимого, вкладываться в своё образование.  ⚠️ Если хотите системно разобраться с оптимизацией Oracle - мы открываем предзапись на 8-й поток курса. Заполните анкету, чтобы узнать детали и зафиксировать место 👇  ЗАПОЛНИТЬ АНКЕТУ Удачи в проектах и пусть ваши запросы выполняются быстро! 🚀 #oracle #базы_данных #карьера_в_IT #оптимизация #DBA #импортозамещение #обучение Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Миф: явный курсор работает быстрее неявного 🧐 Друзья, всем привет! С вами Костя Андронов 👋 Сегодня разберём миф, который до
Миф: явный курсор работает быстрее неявного 🧐 Друзья, всем привет! С вами Костя Андронов 👋 Сегодня разберём миф, который дожил с 90-х: «явный курсор эффективнее неявного». 🕰 Откуда ноги растут В 7 версии Oracle (PL/SQL 2.2) неявный курсор действительно был медленнее. По стандарту ANSI SQL запрос на одну строку обязан убедиться, что строка ровно одна — значит, делается второй FETCH, чтобы поймать TOO_MANY_ROWS. 2 FETCH вместо 1 — отсюда легенда. В следующем релизе PL/SQL 2.3 неявные курсоры оптимизировали, и с тех пор они работают чуть быстрее явных. Но миф жив до сих пор 🤯 ⚙️ Три варианта на примере SELECT INTO — короткий, читаемый, но обязан получить ровно одну строку:
declare
  v_name employees.last_name%type;
begin
  select last_name 
    into v_name 
    from employees 
   where employee_id = 100;
exception
  when no_data_found then
    null; -- обработка
end;
OPEN/FETCH/CLOSE — больше кода, зато полный контроль: проверяем %NOTFOUND без exception:
declare
  cursor c is
    select last_name
      from employees
     where employee_id = 100;
  
  v_name employees.last_name%type;
begin
  open c;
  fetch c into v_name;
  
  if c%notfound
  then
    null; -- обработка
  end if;
  
  close c;
end;
Cursor FOR Loop — компактно для множества строк, Oracle сам открывает/закрывает:
begin
  for r in (select last_name 
              from employees
             where department_id = 10)
  loop
    dbms_output.put_line(r.last_name);
  end loop;
end;
📊 Что говорят цифры Steven Feuerstein (Oracle ACE, автор книг по PL/SQL) прогнал бенчмарк на 100 000 итераций (оригинальная статья тут) . Поиск одной строки, которая есть в таблице: 🔹 SELECT INTO — 4.703 сек 🔹 Cursor FOR Loop — 4.685 сек 🔹 OPEN/FETCH/CLOSE — 5.209 сек А вот когда строки нет: 🔸 SELECT INTO — 6.372 сек (NO_DATA_FOUND стоит дорого) 🔸 Cursor FOR Loop — 4.560 сек 🔸 OPEN/FETCH/CLOSE — 4.703 сек На «холостых» запросах генерация исключения NO_DATA_FOUND из SELECT INTO съедает всё преимущество. 🧭 Когда что выбирать ✅ SELECT INTO — одна строка, и она почти всегда есть. Дефолтный выбор. ✅ OPEN/FETCH/CLOSE — одна строка, и «не нашли» — частый случай. Избегаем дорогого NO_DATA_FOUND. Но с точки зрения читаемости явные курсоры проигрывают: код громоздкий, сам запрос вынесен в секцию`declare` — и потом приходится возвращаться к нему глазами, чтобы понять, что за данные пошли в бизнес-логику. Плюс важно не забывать закрывать курсор — об этом разработчики регулярно забывают. 🤔А что насчёт цикла FOR для гарантированно одной строки? Работает он быстро, но при чтении кода интуитивно сбивает: такой цикл обычно ассоциируется с многострочными запросами. Можно добавить явный exit; в конце цикла — тогда видно, что он отработает только для одной строки, но и не будет исключения если запрос вернет несколько строк и результат будет неожиданным. Использовать ли такой вариант — решайте сами, по производительности он не уступает. Итог 🧩 «Явный курсор быстрее» — это про 7 Oracle из эпохи модемов. Сегодня правило другое: смотрите не на тип курсора, а на то, что вероятнее — найти строку или промахнуться. А вообще производительность чаще страдает совсем не от выбора типа курсора — а от десятков других причин, которые разбираем на курсе по оптимизации. А вы какой курсор используете по умолчанию? Делитесь в Чатике — обсудим ваши кейсы 💬 С вами был Костя. Хорошего дня и быстрых запросов! 🚀 #oracle #plsql #курсоры #оптимизация #базы_данных #Konstantin_Andronov Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Расписание вебинаров этим летом ☀️ Коллеги, всем привет! 👋 Летом мы НЕ планируем уходить в режим "почитаю потом". Наоборот -
Расписание вебинаров этим летом ☀️ Коллеги, всем привет! 👋 Летом мы НЕ планируем уходить в режим "почитаю потом". Наоборот - собрали серию вебинаров для разработчиков, QA, аналитиков и тех, кто хочет спокойнее проходить собеседования, разбираться в архитектурных решениях и меньше тушить пожары в проде. 👉 Чтобы не ловить анонсы вручную в ленте, лучше сразу подписаться на нашего бота. Он напомнит о вебинарах заранее и не даст пропустить их.  Что запланировали на лето   🌞 Июль  - Вебинар на тему «Чтение планов запросов» Разберем куда смотреть, какие выводы делать, как читать планы по 600-800 строк. Бонус: сравним чтение планов в Oracle и PostgreSQL на парочке примеров. ☀️ Июль - Вебинар на тему «Методы индексного доступа» Разберем наиболее популярные методы индексного доступа, посмотрим когда какой подходит, как правильно отвечать на вопросы на собесах. Бонус: разберем устройство LSM-индекса, который может заменить привычный B-tree ☀️ Август - Вебинар на тему «Методы соединения таблиц» Разберем все виды соединения таблиц, их особенности, когда/какие применять, на что обращать внимание в планах. Бонус: сравним с PostgreSQL. ☀️ Август - Вебинар  с приглашенным экспертом Любовью Прохоровой. 🍂 Сентябрь - Секреты работы с большими данными в DWH Как ускорять запросы, какие техники применять, на что обращать внимания. Бонус: поговорим о параллельных запросах и их возможностях Как не пропустить? ✅ Подпишитесь на бота - туда будут приходить точные даты, время, ссылки вебинар и напоминания перед стартом.   ✅ Если тема вам не подходит, просто пропустите конкретный вебинар.   ✅ Если подходит - планируйте время заранее и обязательно приходите, тк записи мероприятий не будут публиковаться в общем доступе. Лето можно провести без перегруза, но с пользой: по одному точному вебинару в нужный момент часто хватает, чтобы закрыть пробел или пересобрать подход к задаче. Если хотите не пропустить анонсы - подпишитесь на бота по ссылке  👇 👉 ПОДПИСАТЬСЯ 👈 Будем разбирать практику без воды и магических рецептов. Оставайтесь с нами и обязательно приглашайте в канал ваших коллег 🙂   #вебинары #обучение_IT #карьера_в_IT #разработка #qa #аналитика #базы_данных Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

Курсоры в Oracle Друзья, всем привет! 👋 С вами Костя Андронов. Один из популярных вопросов на собеседовании по Oracle: Что т
Курсоры в Oracle Друзья, всем привет! 👋 С вами Костя Андронов. Один из популярных вопросов на собеседовании по Oracle: Что такое курсор? Курсор — это указатель на область памяти, в которой Oracle хранит результат SQL-запроса. Когда выполняется SELECT или DML, БД складывает строки в эту область, а курсор позволяет извлекать их в вызывающую среду. В Oracle курсоры бывают двух видов: неявные и явные 🧩 Неявный курсор Создаётся автоматически для любого SQL-запроса внутри PL/SQL-блока. Мы его не объявляем и не закрываем — Oracle делает всё сам. Строго говоря, неявный курсор - это вообще любая SQL-команда: truncate, create, commit, select...
begin
  delete 
    from dept_temp 
   where department_id = 10;
  
  if sql%found then 
    dbms_output.put_line('Удалено строк: ' || sql%rowcount); 
  end if;
end;
🧩 Явный курсор Объявляем сами, сами открываем, читаем построчно и закрываем. Даёт полный контроль над выборкой и умеет принимать параметры.
declare
  cursor c_emp (p_dept number) is
    select department_id,
           department_name
      from dept_temp
     where department_id = p_dept;
  
  v_rec c_emp%rowtype;
begin
  
  open c_emp(10);
  loop
    fetch c_emp into v_rec;
    exit when c_emp%notfound;
    
    dbms_output.put_line(v_rec.department_name);
  end loop;
  
  close c_emp;
end;
Информацию о любом курсоре можно получить через его атрибуты, которые доступны через его имя (например c_emp) или через sql для неявных курсоров. Подробнее атрибуты курсоров разбирали в этом посте ❓ В чем сложность при работе с явными курсорами? Если возникнет исключение между open и close (например, в fetch или в dbms_output), управление сразу уйдёт за пределы блока (или в exception-секцию, если она есть), и close c_emp; не выполнится. Курсор останется открытым 😱 Почему это плохо: 🔸 Курсор занимает слот в open_cursors сессии, а они ограничены 🔸 Если такой блок вызывается в цикле или в процедуре, которая вызывается часто, рано или поздно можно поймать ORA-01000: maximum open cursors exceeded 🔸 В анонимном блоке верхнего уровня, после окончания вызова, Oracle сам подчистит сессионные ресурсы, но полагаться на это — плохая практика. ⚠️ Как с этим бороться? 1️⃣ Перехватить исключение в exception блоке
...
exception
  when others then
    if c_emp%isopen then
      close c_emp;
    end if;
    raise; 
end;   
2️⃣ Использовать цикл FOR. Oracle сам объявит переменную типа %rowtype, откроет и закроет курсор (даже при исключении), будет извлекать строки по 1 на каждой итерации обязательного цикла:
begin
  for rec in (select department_name
                from dept_temp
               where department_id = 10)
  loop
    dbms_output.put_line(rec.department_name);
  end loop;
end;
📌 Зачем нужны курсоры?Неявный — когда достаточно выполнить запрос и узнать, что вышло: сколько строк затронуто, был ли результат ✅ Явный — когда нужны параметры, контроль над FETCH, обработка нескольких выборок одновременно или передача курсора между процедурами через REF CURSOR. ❤️ Если тема зашла — cтавьте 👍🏻, разберём, есть ли разница в производительности между явным и неявным курсором С вами был Костя Андронов. Всем продуктивного дня! 🚀 #oracle #plsql #курсоры #Konstantin_Andronov Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE

پیام ویدیو00:40

Коллеги, всем привет! 👋 Вчера прошел очень интересный и актуальный эфир с Любой. Как всегда, было много полезной информации
Коллеги, всем привет! 👋 Вчера прошел очень интересный и актуальный эфир с Любой. Как всегда, было много полезной информации о текущей ситуации на рынке и поиске работы. 📈 После эфира Люба попросила нас пройти небольшой анонимный опрос - всего 7 вопросов о поиске работы в этом году. 📝 Если у вас есть несколько минут, давайте поддержим Любу и заполним анкету по ссылке ниже ✍️ 👉 ЗАПОЛНИТЬ АНКЕТУ 👈 Спасибо всем за участие и хороших выходных! #карьера_в_IT #soft_skills #работа #поиск #оффер #собеседование Канал Oracle Developer | Чатик 💬 Мини-курс Оптимизация: Быстрый старт 🚀 📱 YouTube 📱 ВКонтакте 📱 LinkedIn 📱Threads RUTUBE