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
Тест на знание Oracle PL/SQL – проверь себя!

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

Как вы думаете, хорошо ли вы разбираетесь в Oracle PL/SQL? Или, может быть, пора обновить знания? Для вас я подготовил тест, который подойдет как новичкам, так и опытным разработчикам.

Что вас ждет в тесте

🔶 Практические задачи, которые встречаются в повседневной жизни
🔶 Вопросы, которые задают на собеседовании
🔶 Задачки с подвохом

🔗 Ссылка на тест 👈👈👈

💡 А что дальше?

Мы не просто так даем вам этот тест. Уже завтра стартует марафон по PL/SQL, где мы вместе разберем все вопросы теста и подробно объясним ответы .

🚀 Что будет на марафоне?

Разбор теста
Практические задачи, обновленный синтаксис PLSQL
Карьерный путь + разбор ваших резюме
Советы по поводу того, как пройти собеседование
Возможность задать вопросы и получить обратную связь
Запись марафона будет доступна!

Более подробно с Программой марафона вы можете ознакомиться постом выше 🔝

📅 Даты проведения: 18–20 марта
Время: 19:00 МСК (каждый эфир — 1–1,5 часа)
💰 Стоимость: 2990 рублей

➡️ Забронировать место ⬅️

Вы не из РФ и не можете оплатить? Напишите в поддержку 👈

🔥 Места ограничены — всего 100! Не упустите шанс получить концентрированные знания и инсайты о карьере в Oracle PL/SQL! 🚀

💬 Пишите в комментариях, сколько баллов у вас получилось, и смотрите разбор ошибок на марафоне! 🔥

#КарьерныйРост #Работа #Эффективность
#карьера #oracle #postgresql #Denis_Kivillev

Канал Oracle Developer | Чатик💬
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Марафон стартует сегодня в 19:00 – проверьте доступ и бонусные материалы! 🔥

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

Сегодня в 19:00 начинается наш марафон по PL/SQL! 🎉

⚠️ Если вы уже оплатили участие, обязательно проверьте, что вам предоставили доступ.
Если вдруг доступа нет – срочно напишите в поддержку 👈, и мы оперативно решим этот вопрос.

📌 Бонусные материалы, которые вы получите на марафоне:

🔸 Записи трех вебинаров от Паши: "Динамический SQL", "Циклы в Oracle 21c + FORALL", "Объекты в PL/SQL".
🔸 Запись эфира по финансовой грамотности от приглашенного эксперта.
🔸 Эксклюзив от карьерного консультанта Любы – "тренды IT-рынка в 2025 году" 🔥🔥🔥

До старта марафона осталось совсем немного времени! 🕙
Успейте подключиться, чтобы ничего не пропустить.

Записи марафона будут доступны в закрытой группе! 🔐

Более подробно с Программой марафона вы можете ознакомиться тут 🔝

📅 Даты проведения: 18–20 марта
Время: 19:00 МСК (каждый эфир — 1–1,5 часа)
💰 Стоимость: 2990 рублей

➡️ Забронировать место ⬅️

Вы не из РФ и не можете оплатить? Напишите в поддержку 👈

#КарьерныйРост #Работа #Эффективность
#карьера #oracle #postgresql #Denis_Kivillev

Канал Oracle Developer | Чатик💬
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Первый день марафона был просто огонь! 🔥

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

Вчера прошел первый день марафона, и он был потрясающим! 🔥
Куча полезного контента и разборов отдельных кейсов!

Если вдруг пропустили или сомневаетесь, стоит ли участвовать - посмотрите небольшой отрывок из вчерашней сессии ☝️ и убедитесь сами!

Мы разобрали новые возможности в Oracle 21c, обсудили импортозамещение, рост зарплат, тренды 2025 года и что сделать, чтобы оставаться востребованным специалистом в IT.

💬 Вот что писали участники после первого дня
🔥 «Спасибо за отличный тест!»
🔥 «Понял, что многие вещи в PL/SQL просто делал не так – спасибо за разбор!»
🔥 «Теперь у меня четкий план, что учить и куда двигаться»

📌 Вы еще можете добиться успеха!
🕒 Осталось 2 дня марафона – и это ваш шанс влиться и получить максимальную пользу!

Как этого достичь?
Включайтесь на марафон сегодня!
Смотрите в группе запись первого дня, чтобы догнать ребят
Задавайте вопросы в чате, мы поможем разобраться!

🚀 Что вас ждет на марафоне?


Полная программа марафона здесь 👈

📌 Все записи сохраняются в группе!

📅 Даты проведения: 18–20 марта
Время: 19:00 МСК (каждый эфир — 1–1,5 часа)
💰 Стоимость: 2990 рублей

➡️ Принять участие ⬅️

Вы не из РФ и не можете оплатить? Напишите в поддержку 👈

#КарьерныйРост #Работа #Эффективность
#карьера #oracle #postgresql #Denis_Kivillev

Канал Oracle Developer | Чатик💬
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Как перестать просто писать код и стать Senior-ом?

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

Второй день нашего марафона получился очень насыщенным! 🔥 Мы разобрали домашнее задание, предложили его решение на уровне Senior-разработчика. А еще пригласили в эфир двух наших студентов и поговорили с ними о том, какие ошибки мешают росту в карьере. В конце встречи ребята задавали мне и Паше вопросы, а мы делились с ними своим опытом.

📌 Кейс ученика: как оптимизировать критичный процесс?
У нас в гостях побывал выпускник предыдущего потока по оптимизации Рамазан, и он рассказал, как они вместе с Пашей применили в одной из его задач многопоточность, что позволило получить фантастический выигрыш в скорости на критичных бизнес-процессах.

Смотрите видео, приложенное к посту, там как раз немного об этом рассказывается.

📌 Middle vs Senior – в чем разница?
Ключевая тема вчерашнего эфира: "Как из мидла стать синьором-помидором" 🍅
И судя по реакции зала, у нас получилось ее раскрыть.

💬 Вот что писали участники в конце дня:
🔥 «Спасибо. Системная и полезная информация. Очень полезно»
🔥 «Отличный день. Особенно разбор задачи»
Были и шуточки о том, что «Круче сеньера только Чак Норрис» 🤘🏻

Сегодня пройдет заключительный день марафона, где мы:

снова встретимся с нашей карьерной феей Любой
прожарим несколько резюме в прямом эфире
поговорим про ваш карьерный путь и дадим практические советы по его ускорению

Хотите поучаствовать?
➡️ Забронировать место ⬅️

📌 Записи всех встреч сохраняются в группе!

Вы не из РФ и не можете оплатить? Напишите в поддержку 👈

#КарьерныйРост #Работа #Эффективность
#карьера #oracle #postgresql #Denis_Kivillev

Канал Oracle Developer | Чатик💬
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Хранимая процедура с секретом – разберешься?

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

Прошлая неделя прошла под флагом PL/SQL-марафона (подробности были тут). Судя по отзывам, он вам зашел! 🚀 Мы уже готовим серию вебинаров на откликнувшиеся вам темы. 🔥 Но перед этим — небольшая задачка, решение которой вам скоро пригодится 😉

Итак,
💡 Задача:
Нужно написать хранимую процедуру, которая принимает параметр любого типа и выводит его значение на экран.
⭐️ Дополнительное задание для знатоков: если параметр типа nested table, вывести количество записей в коллекции.

Простая задача? Давайте проверим! 😏

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

📅 Разбор задачи будет в четверг, так что следите за обновлениями! 👀

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

🔗 Канал Oracle Developer | Чатик💬
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Хранимая процедура с секретом – разберешься?

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

Во вторник мы подкинули вам задачку про гибкие параметры хранимых процедур в Oracle. Спасибо всем, кто прислал решение и принял участие в жаркой 🔥 дискуссии! Многие сразу догадались, что речь идёт про ANYDATA. Но главный вопрос: а зачем это вообще нужно на практике? 🤔

У меня есть для вас один интересный кейс, и уже в следующий четверг мы обязательно его обсудим. Следите за анонсами! 📅

А пока разберёмся с ANYDATA и решением задачки.

💡Что такое ANYDATA

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

Когда может быть полезен

🔶 интеграции, API
🔶 EAV-архитектура
🔶 многослойные пользовательские интерфейсы, и т.п.

Основное преимущество для разработчика — отсутствие необходимости хранить метаданные, а также самому реализовывать валидацию и парсинг пользовательских данных. Anydata берет всё это на себя! 🚀

А теперь решение задачки 📚

1️⃣ Процедура с параметром

CREATE OR REPLACE PROCEDURE p_get_anydata_value
(
p_param IN anydata
) IS
l_anytype anytype;
l_typecode PLS_INTEGER;
l_varchar_value VARCHAR2(255 Char);
l_num_value NUMBER;
l_collection t_numbers;
l_status VARCHAR2(64 CHAR);
BEGIN
-- Проверяем тип данных в ANYDATA
l_typecode := p_param.GetType(l_anytype);

IF l_typecode IN (dbms_types.TYPECODE_NAMEDCOLLECTION
,dbms_types.TYPECODE_TABLE) THEN
-- Извлекаем коллекцию
IF p_param.GetCollection(l_collection) = dbms_types.SUCCESS THEN
l_status := 'record_count=' || l_collection.count();
ELSE
l_status := 'ошибка извлечения коллекции';
END IF;
ELSIF l_typecode = dbms_types.TYPECODE_VARCHAR2 THEN
IF p_param.GetVarchar2(l_varchar_value) = dbms_types.SUCCESS THEN
l_status := l_varchar_value;
END IF;
ELSIF l_typecode = dbms_types.TYPECODE_NUMBER THEN
IF p_param.GetNumber(l_num_value) = dbms_types.SUCCESS THEN
l_status := l_num_value;
END IF;
ELSE
l_status := 'неподдерживамый тип параметра';
END IF;
dbms_output.put_line(l_status);
END p_get_anydata_value;
/


2️⃣ Пример вызова

create or replace type t_numbers is table of number;
/

begin
dbms_output.put_line('anydata.ConvertNumber:');
p_get_anydata_value(anydata.ConvertNumber(25));
dbms_output.put_line('anydata.ConvertVarchar2:');
p_get_anydata_value(anydata.ConvertVarchar2('Это строка'));
dbms_output.put_line('anydata.ConvertCollection:');
p_get_anydata_value(anydata.ConvertCollection(t_numbers(1, 2, 3, 4, 5)));
end;
/


3️⃣ Вывод в консоль

anydata.ConvertNumber:
25
anydata.ConvertVarchar2:
Это строка
anydata.ConvertCollection:
record_count=5


🔥 Как вам задачка? Возможно, у вас тоже есть интересные кейсы с ANYDATA? Или вы придумали, как его использовать в своём проекте? Делитесь мнением в нашем чатике 💬

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

🔗 Канал Oracle Developer | Чатик 💬
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💡5 шагов к зарплате 200К+ в 2025 году!

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

Я часто получаю вопросы в личке:

«Денис, ну я же нормальный специалист. Опыт 5-7 лет, задачи решаю, тесты пишу, заказчик доволен… Почему я до сих пор сижу на зп 150-180К, а кто-то получает 220-250К — и это считается нормой?»

Отвечаю.

📌 В 2025 году быть просто «нормальным специалистом» уже недостаточно. Если вы хотите ЗП от 220К и выше, вы должны уметь:

Писать качественный и читаемый код, применять паттерны проектирования
Уметь в микросервисную архитектуру, работать с API и интеграциями
Тестировать свой код через юнит-тесты
Иметь навыки оптимизации SQL
И главное — уметь себя продавать на рынке

🔥 И вот вам свежий кейс 🔥

Мы недавно отбирали ребят на курс. Пришел парень — всего 2 года опыта по PL/SQL, но:

🔶 у него системный подход
🔶 рассказал про свой план развития на ближайшие пару лет
🔶 ему все реально интересно
🔶 умеет себя преподнести

💥 Итог: получил оффер на 240К. Без «10 лет в банке», не имея 3х лет стажа и т.п.

Или пример того самого Паши, который в свои 23 со стажем 2,5 года уже зарабатывает 210К и планирует в этом году стать senior-разработчиком.

А теперь вопрос к вам:

👉 Вы держитесь за свои 150К с 5+ годами стажа, потому что боитесь изменений?
👉 Или потому что «ещё не время»?
👉 Или потому что не знаете, с чего начать?
👉🏻 Или просто не хотите инвестировать в свои знания?

Что бы вы ни выбрали, ответ будет один: нужно начать с себя

📅 Уже через 5 дней стартует курс «Мастер Oracle PL/SQL» — последний в этом году.

💡 Что вас ждет на курсе:

Системное обучение PL/SQL от экспертов в своем деле
Теория + очень много практики
Классический Oracle + новинки версии 21с
трехзвенка, API, юнит-тесты
Сертификат об окончании, карьерная поддержка, помощь с резюме
Помощь с подбором вакансий — не останетесь без работы!

💰 Окупаемость курса — 1-2 месяца на вашей новой работе.

Пропустите — и следующая возможность будет только в 2026 году. А это уже другой рынок, другие конкуренты.

📌 Если давно хотели — время пришло!

Пишите в поддержку, увидимся 4 апреля

Удачи! И пусть PL/SQL принесет вам уверенность в завтрашнем дне и достойный доход! 💪

#oracle #plsql #карьера #зарплата #собеседование #резюме #курс

Канал Oracle Developer | Чатик 💬
Please open Telegram to view this post
VIEW IN 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%
Возникнет ошибка