Oracle Developer👨🏻‍💻
3.17K subscribers
583 photos
63 videos
2 files
469 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...

Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
Anydata в реальном проекте: зачем и как использовать? 🎯

Друзья, всем привет! 👋

На прошлой неделе мы с вами решали задачку про Anydata.
Решение многим понравилось, но вопрос "зачем это вообще нужно на практике?" по-прежнему остается актуальным 🤔

Я обещал подкинуть вам реальный кейс – ловите! 🎯

Представьте: у вас в схеме есть интеграционный пакет, который обменивается данными со сторонним API 🌐
Или, если вам ближе DWH, пусть это будет формирование витрин по расписанию .

Задача простая – запустить произвольный PL/SQL-метод асинхронно или по расписанию.

Но вот загвоздка: каждый метод принимает разные параметры, в т.ч. коллекции, объявленные на уровне схемы.

Какое решение, кроме динамического SQL, вы могли бы предложить

Делитесь своими решениями в нашем чатике 💬

Разбор задачи, как обычно, в четверг 🔥

#Oracle #PLSQL #Anydata #Pavel_Dolganov #задачка

🔗 Канал Oracle Developer | Чатик 💬
Please open Telegram to view this post
VIEW IN TELEGRAM
Anydata в реальном проекте: зачем и как использовать? 🎯 Решение задачи

Друзья, всем привет! 👋🏻

Во вторник мы кидали вам практическую задачку по Anydata. Сегодня публикуем обещанное решение 👇🏻

Ключевая идея — использовать dbms_scheduler, т.к. по сравнению с классическим dbms_job он предлагает гораздо больше возможностей:

расширенное логирование запусков
цепочки заданий (chains)
сложные повторения
программы

Более подробно об этом мы говорим на курсе Мастер Oracle PL/SQL.

Что мы делаем конкретно в этой задаче

1️⃣ Используем пакет dbms_describe для анализа метода

Нам понадобится:
🔶 тип данных t_describe
🔶 метод describe_procedure, который проанализирует процедуру и поймет, какие параметры она принимает на вход.

2️⃣ Реализуем маппинг типов данных
Нам нужно сопоставить типы данных Oracle с теми, что поддерживает dbms_scheduler.
В коде за это отвечает метод get_oratype_name.

3️⃣ Создаем программу
Она будет запускать асинхронно или по расписанию произвольный PL/SQL-метод.

4️⃣ Привязываем к программе параметры метода
через dbms_scheduler.define_program_argument.

5️⃣ Создаем джоб
Для передачи параметров используем sys.jobarg_array, основанный на объекте sys.jobarg.

Пример вызова процедуры:
DECLARE
v_import_data t_credit_table;
v_arguments sys.jobarg_array;

BEGIN
IF v_import_data IS NOT empty THEN
v_arguments := sys.jobarg_array(
sys.jobarg(1, anydata.ConvertCollection(v_import_data)),
sys.jobarg(2, anydata.ConvertChar(const_pkg.c_yes)));

-- Создадим и запустим джоб
user_jobs_pkg.create_user_job(p_program_name => 'p_process_contracts',
p_program_action => $$PLSQL_UNIT || '.run_job',
p_arguments => v_arguments);
END IF;
END;
/


Код пакета user_jobs_pkg в комментариях к этому посту 👇🏻

Коллеги, это решение может показаться громоздким, но оно из серии "сделал и забыл". ✍️
Один раз настроили, отладили - и можно вызывать асинхронно любые методы. Прелесть же?! 😉

Напишите в комментариях, что думаете по этому поводу? 🤔
Если зашло, ставьте по традиции жирный 👍🏻, мы старались.

На этом тему anydata в Oracle считаем закрытой 😊 Сорри, если она вам приелась, но для senior-разработчика это 💯 полезный навык.

Друзья, также напоминаю, что уже завтра стартует счастливый 1️⃣4️⃣ поток курса Мастер Oracle PL/SQL 🚀

Если вы хотите:
🔶 увидеть еще больше кейсов из реальных проектов;
🔶 научиться работать с трехзвенкой;
🔶 посмотреть на новинки в Oracle 21c;
🔶 наконец-то начать писать юнит-тесты;
🔶 запилить в гитхаб свой собственный крутой pet-проект 🤟

, то успевайте 🕙.
Следующая такая возможность будет нескоро. 🤷‍♂️

#Oracle #PLSQL #Anydata #Pavel_Dolganov #задачка

🔗 Канал Oracle Developer | Чатик 💬
Please open Telegram to view this post
VIEW IN TELEGRAM
Пятничный тест по PL/SQL

Коллеги, всем привет!

Давайте разомнемся в пятницу перед выходными 🏋🏻‍♀️
Вопросики по PL/SQL для уровня middle/senior.

Погнали!


А где-то в фоне стартовал 14й поток по PL/SQL. Ребята начинают 2.5 месячное путешествие по просторам PL/SQL. Еще есть время присоединиться 😉
Пиши в поддержку 🚀

#Oracle #PLSQL #Pavel_Dolganov #тест
🔗 Канал Oracle Developer | Чатик 💬
1️⃣ вопрос
Forwarded from Pavel V
Вопрос: Что произойдет, если в таблице employees нет сотрудника с employee_id = 1
Anonymous Quiz
27%
Выведется Salary: <NULL>
18%
Выведется Salary: 0
45%
Возникнет ошибка NO_DATA_FOUND
10%
Возникнет ошибка INVALID_CURSOR
2️⃣ вопрос
Forwarded from Pavel V
3️⃣ вопрос
4️⃣ вопрос
Forwarded from Pavel V
Вопрос: Какое значение зарплаты будет у сотрудника с employee_id = 100 после выполнения запроса
Anonymous Quiz
14%
Зарплата увеличится на 20%
27%
Зарплата увеличится на 10%
44%
Зарплата увеличится на 32%
14%
Возникнет ошибка
5️⃣ вопрос
Forwarded from Pavel V
Вопрос: Что будет выведено в результате выполнения запроса
Anonymous Quiz
10%
1, 2, 3
54%
3, 2, 1
7%
3, 3, 3
29%
Возникнет бесконечная рекурсия
6️⃣ вопрос
Forwarded from Pavel V
Вопрос: укажите минимально и максимально возможные значения COUNT, если в обеих таблицах по 15 записей
Anonymous Quiz
37%
0 и 15
6%
1 и 15
41%
0 и 225
15%
15 и 225
7️⃣ вопрос
Вопрос: укажите минимально и максимально возможные значения COUNT, если в обеих таблицах по 15 записей, все числа положительны, каждое из допустимых чисел встречается хотя бы раз (но не более двух)
Anonymous Quiz
58%
15 и 225
12%
9 и 225
18%
9 и 81
12%
20 и 225
🔥ТОП ПОСТОВ за март месяц, которые вы могли пропустить

Друзья, привет!

Мы каждый месяц публикуем обзоры на наши посты. Хочу напомнить, что у меня на канале выходит очень много полезного материала и вы 100% могли что-то пропустить полезное.

Для этого и появилась рубрика 🔥

Полезные посты

Кейс выпускника: как освоение оптимизации увеличило доход в 2 раза

🔥 Почему новичкам в Oracle PL/SQL сложно выйти на достойный доход? 🔥

🚀 Марафон по Oracle PL/SQL завершён — подводим итоги!

💡 Как не завалить первое интервью и получить оффер?


Технические задачки

👨‍💻 Сравнение объектов в PL/SQL: простая задачка на разогрев

☑️ Тест на знание Oracle PL/SQL – проверь себя!

💻 Хранимая процедура с секретом – разберешься?

💻 Anydata в реальном проекте: зачем и как использовать? 🎯

🧑‍💻 Пятничный тест по PL/SQL

Подкасты

🎙 Актуальное состояние рынка вакансий в Oracle в 2025 году 💼

Канал Oracle Developer | Чатик💬
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, всем привет! 👋🏻

На связи Денис. Пока Паша проводил вебинары и марафон по PL/SQL, готовил для вас посты, я был занят созданием нового продукта:
Экспресс-курс «Оптимизация Oracle SQL: Быстрый старт» 🚀

Продолжительность прохождения: 6–8 часов.
Несмотря на сжатый формат, наш подход остался прежним: мы даём то, что можно применять сразу на работе.

Что в курсе
Быстрый старт в оптимизации Oracle SQL
Планы запросов из реальных проектов
Поиск узких мест и тормозов
Перенос изменений на «горячие» системы, работающие 24/7/365
И всё это — в сжатом, понятном и применимом формате 👍

22 марта с пятью нашими студентами мы совершенно бесплатно провели альфа-тестирование.
Курс показал себя отлично! 💪 Да, были кое-какие замечания — и я их учёл.

И теперь мы готовы к запуску второй волны! 🔥

11 апреля я открою набор в группу бета-тестирования.
❗️Важно: в бета-тест беру только 5️⃣ человек.

Доступ будет по спецусловиям — 4990 ₽ за участие.

Для фана я решил добавить немного игровой механики 😊
🔸За каждый найденный баг я верну 100 ₽ 💰 В коде, в звуке, в тексте — без разницы.
🔸Первому, кто закончит курс — 1000 ₽, второму — 500 ₽, третьему - 200 ₽ 🔥

Если ты помогаешь нам сделать продукт лучше — ты зарабатываешь.

Где вы вообще такое видели? 😄

📆 Обучение: с 12 по 16 апреля.
Формат: видео-уроки, учишься как удобно.

Всего за 4 дня ты
проходишь обучение
находишь ошибки
присылаешь обратную связь
выходишь с новыми инструментами на работу 👍

Ждём именно тебя, если ты хочешь
🔶 быстро прокачаться в оптимизации SQL 🔧
🔶 начать применять знания на практике 🚀
🔶 не ждать, пока «соберутся звёзды», а начать действовать 💪

Ещё раз: только 5 человек❗️
Без доп. мест. Без списков ожидания 🙅‍♂️
Кто первый написал и оплатил — тот и попал на обучение 🕙

Уже 11 апреля мы выкатим полную программу 📚
А 19 апреля будет открытый запуск — но уже с другими условиями 😎

Готов? Тогда следи за анонсами 👇🏻

#oracle #sql #оптимизация #курс #практика #backendpro #кивилев #новыйкурс #миникурс #тестирование #запуск
Канал Oracle Developer | Чатик💬
Please open Telegram to view this post
VIEW IN TELEGRAM