Анонимный блок в SQL
Мы обычно пишем запросы: SELECT, INSERT, UPDATE… Это отдельные команды, и каждая выполняется сама по себе. Но иногда нам хочется написать целую мини-программу, которая делает несколько действий сразу: например, берёт данные из одной таблицы, считает что-то, обновляет другую таблицу и выводит результат. И при этом нам не нужно, чтобы эта программа сохранялась в базе как функция или процедура - мы просто хотим один раз выполнить код.
Вот для этого и нужен анонимный блок.
А в моем канале Аналитика FM выпуски про расчет Cohort Retention в разных бизнесах.
Канал я веду с нуля подписчиков, рассказываю про аналитику и разбираю различные кейсы на реальных примерах.
Подписывайся, если интересно как устроен мир аналитика!
Анонимный блок - это кусок кода, который:
- Объединяет несколько SQL-команд в одну "программу".
- Может содержать переменные, условия (IF), циклы (LOOP) и логику, как в обычной программе.
- Не сохраняется в базе - после выполнения он исчезает. Его никто не будет видеть в списке функций или процедур.
То есть это как написать одноразовый скрипт: ты его запускаешь, видишь результат - и больше он никуда не сохраняется.
Пример в Oracle PL/SQL
Что здесь происходит:
- BEGIN ... END; - тело блока, где выполняется логика.
- DECLARE - можно объявлять переменные.
- SQL-команда SELECT ... INTO считает количество пользователей и кладёт в переменную.
- DBMS_OUTPUT.PUT_LINE выводит текст на экран.
- / - говорит Oracle, что блок закончился и его нужно выполнить.
После выполнения блока: переменные исчезают, код никуда не сохраняется, всё "одноразовое".
Пример в PostgreSQL
В PostgreSQL нет точно такого же синтаксиса, но есть DO-блок:
- DO $ ... $; - обёртка для анонимного блока. Мы говорим базе, что сейчас идет блок кода, который нужно выполнить целиком как отдельную программу.
- Объявляем переменную v_count. Она нам нужна, чтобы сохранить результат вычислений и использовать его дальше внутри блока.
- Все, что внутри BEGIN ... END, выполняется пошагово как мини-программа. Считаем количество строк в таблице users и записываем это значение в объявленную переменную
- RAISE NOTICE выводит сообщение. % заменяется на значение переменной v_count.
Зачем это нужно
- Разовая операция. Хочешь разово обновить данные или проверить что-то - не нужно создавать отдельную функцию.
- Тестирование логики. Пробуешь алгоритм, проверяешь, как работает SQL вместе с переменными и условиями.
- Быстрое прототипирование. Хочешь понять, как соединить несколько шагов в одну последовательность действий.
Анонимный блок - это как одноразовый скрипт в SQL, который можно писать прямо в базе. Он может быть сложным, с переменными и логикой, но после выполнения исчезает.
Для аналитика это полезно, если нужно быстро посчитать что-то, проверить гипотезу или сделать массовую корректировку данных, не создавая постоянную функцию или процедуру.
В канале Аналитика FM разбираем реальные продуктовые метрики и их реализацию на SQL.
Погружаемся в мира аналитики и аналитического мышления.
Если у тебя тоже есть интерес к аналитике, Подписывайся!
#Python
#IT
#Программирование
#Автоматизация
#Аналитик
#Аналитика
#Метрики
#SQL
#MicrosoftExcel
#базаданных
#СистемныйАнализ
#СистемныйАналитик
#Самообразование
#КритическоеМышление
#Стартап
#Развитие
#Фриланс