Anydata в реальном проекте: зачем и как использовать? 🎯
Друзья, всем привет! 👋
На прошлой неделе мы с вами решали задачку про Anydata.
Решение многим понравилось, но вопрос "зачем это вообще нужно на практике?" по-прежнему остается актуальным 🤔
Я обещал подкинуть вам реальный кейс – ловите! 🎯
Представьте: у вас в схеме есть интеграционный пакет, который обменивается данными со сторонним API 🌐
Или, если вам ближе DWH, пусть это будет формирование витрин по расписанию ⏳.
Задача простая – запустить произвольный PL/SQL-метод асинхронно или по расписанию.
Но вот загвоздка: каждый метод принимает разные параметры, в т.ч. коллекции, объявленные на уровне схемы.
Какое решение, кроме динамического SQL, вы могли бы предложить❓
Делитесь своими решениями в нашем чатике 💬
Разбор задачи, как обычно, в четверг 🔥
#Oracle #PLSQL #Anydata #Pavel_Dolganov #задачка
🔗 Канал Oracle Developer | Чатик 💬
Друзья, всем привет! 👋
На прошлой неделе мы с вами решали задачку про 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. Сегодня публикуем обещанное решение 👇🏻
Ключевая идея — использовать
✅ расширенное логирование запусков
✅ цепочки заданий (chains)
✅ сложные повторения
✅ программы
Более подробно об этом мы говорим на курсе Мастер Oracle PL/SQL.
Что мы делаем конкретно в этой задаче❓
1️⃣ Используем пакет
Нам понадобится:
🔶 тип данных
🔶 метод
2️⃣ Реализуем маппинг типов данных
Нам нужно сопоставить типы данных Oracle с теми, что поддерживает
В коде за это отвечает метод
3️⃣ Создаем программу
Она будет запускать асинхронно или по расписанию произвольный PL/SQL-метод.
4️⃣ Привязываем к программе параметры метода
через
5️⃣ Создаем джоб
Для передачи параметров используем
Пример вызова процедуры:
Код пакета user_jobs_pkg в комментариях к этому посту 👇🏻
Коллеги, это решение может показаться громоздким, но оно из серии "сделал и забыл".✍️
Один раз настроили, отладили - и можно вызывать асинхронно любые методы. Прелесть же?! 😉
Напишите в комментариях, что думаете по этому поводу? 🤔
Если зашло, ставьте по традиции жирный 👍🏻, мы старались.
На этом тему anydata в Oracle считаем закрытой 😊 Сорри, если она вам приелась, но для senior-разработчика это💯 полезный навык.
Друзья, также напоминаю, что уже завтра стартует счастливый1️⃣ 4️⃣ поток курса Мастер Oracle PL/SQL 🚀
Если вы хотите:
🔶 увидеть еще больше кейсов из реальных проектов;
🔶 научиться работать с трехзвенкой;
🔶 посмотреть на новинки в Oracle 21c;
🔶 наконец-то начать писать юнит-тесты;
🔶 запилить в гитхаб свой собственный крутой pet-проект🤟
, то успевайте🕙 .
Следующая такая возможность будет нескоро. 🤷♂️
#Oracle #PLSQL #Anydata #Pavel_Dolganov #задачка
🔗 Канал Oracle Developer | Чатик 💬
Друзья, всем привет! 👋🏻
Во вторник мы кидали вам практическую задачку по 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-разработчика это
Друзья, также напоминаю, что уже завтра стартует счастливый
Если вы хотите:
🔶 увидеть еще больше кейсов из реальных проектов;
🔶 научиться работать с трехзвенкой;
🔶 посмотреть на новинки в 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 | Чатик 💬
Коллеги, всем привет!
Давайте разомнемся в пятницу перед выходными 🏋🏻♀️
Вопросики по PL/SQL для уровня middle/senior.
Погнали!
—
А где-то в фоне стартовал 14й поток по PL/SQL. Ребята начинают 2.5 месячное путешествие по просторам PL/SQL. Еще есть время присоединиться 😉
Пиши в поддержку 🚀
#Oracle #PLSQL #Pavel_Dolganov #тест
🔗 Канал Oracle Developer | Чатик 💬
Forwarded from Pavel V
Вопрос: Что произойдет, если в таблице employees нет сотрудника с employee_id = 1❓
Anonymous Quiz
27%
Выведется Salary: <NULL>
18%
Выведется Salary: 0
45%
Возникнет ошибка NO_DATA_FOUND
10%
Возникнет ошибка INVALID_CURSOR
Forwarded from Pavel V
Вопрос: Что будет выведено на экран❓
Anonymous Quiz
43%
2 3
2%
0 0
6%
0 <NULL>
48%
Возникнет ошибка "ORA-06531: Ссылка на неинициализированный набор"
Forwarded from Pavel V
Forwarded from Pavel V
Вопрос: Какое значение зарплаты будет у сотрудника с employee_id = 100 после выполнения запроса❓
Anonymous Quiz
14%
Зарплата увеличится на 20%
27%
Зарплата увеличится на 10%
44%
Зарплата увеличится на 32%
14%
Возникнет ошибка
Forwarded from Pavel V
Вопрос: Что будет выведено в результате выполнения запроса❓
Anonymous Quiz
10%
1, 2, 3
54%
3, 2, 1
7%
3, 3, 3
29%
Возникнет бесконечная рекурсия
Forwarded from Pavel V
Вопрос: укажите минимально и максимально возможные значения COUNT, если в обеих таблицах по 15 записей❓
Anonymous Quiz
37%
0 и 15
6%
1 и 15
41%
0 и 225
15%
15 и 225
Вопрос: укажите минимально и максимально возможные значения 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 | Чатик💬
Друзья, привет!
Мы каждый месяц публикуем обзоры на наши посты. Хочу напомнить, что у меня на канале выходит очень много полезного материала и вы 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 | Чатик💬
На связи Денис. Пока Паша проводил вебинары и марафон по 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 | Чатик💬