Веб-аналитика

Анонимный блок в SQL — 25.03.26 10:00

Мы обычно пишем запросы: SELECT, INSERT, UPDATE…
Это отдельные команды, и каждая выполняется сама по себе. Но иногда нам хочется написать целую мини-программу, которая делает несколько действий сразу: например, берёт данные из одной таблицы, считает что-то, обновляет другую таблицу и выводит результат.
И при этом нам не нужно, чтобы эта программа сохранялась в базе как функция или процедура — мы просто хотим один раз выполнить код.

Вот для этого и нужен анонимный блок.

Анонимный блок в SQL - 25.03.26 10:00

А в моем канале Аналитика FM выпуски про расчет Cohort Retention в разных бизнесах.

Канал я веду с нуля подписчиков, рассказываю про аналитику и разбираю различные кейсы на реальных примерах.

Подписывайся, если интересно как устроен мир аналитика!

Анонимный блок — это кусок кода, который:

  1. Объединяет несколько SQL-команд в одну «программу».

  2. Может содержать переменные, условия (IF), циклы (LOOP) и логику, как в обычной программе.

  3. Не сохраняется в базе — после выполнения он исчезает. Его никто не будет видеть в списке функций или процедур.

То есть это как написать одноразовый скрипт: ты его запускаешь, видишь результат — и больше он никуда не сохраняется.

Пример в Oracle PL/SQL

BEGIN

— объявляем переменную

DECLARE

v_count NUMBER;

BEGIN

— считаем количество записей в таблице users

SELECT COUNT(*) INTO v_count FROM users;

— выводим результат

DBMS_OUTPUT.PUT_LINE(‘Всего пользователей: ‘ || v_count);

END;

END;

/

Что здесь происходит:

  • BEGIN … END; — тело блока, где выполняется логика.

  • DECLARE — можно объявлять переменные.

  • SQL-команда SELECT … INTO считает количество пользователей и кладёт в переменную.

  • DBMS_OUTPUT.PUT_LINE выводит текст на экран.

  • / — говорит Oracle, что блок закончился и его нужно выполнить.

После выполнения блока: переменные исчезают, код никуда не сохраняется, всё «одноразовое».

Пример в PostgreSQL

В PostgreSQL нет точно такого же синтаксиса, но есть DO-блок:

DO $$
DECLARE
v_count INT;
BEGIN
SELECT COUNT(*) INTO v_count FROM users;
RAISE NOTICE ‘Всего пользователей: %’, v_count;
END
$$;

  • DO $$ … $$; — обёртка для анонимного блока. Мы говорим базе, что сейчас идет блок кода, который нужно выполнить целиком как отдельную программу.

  • Объявляем переменную v_count. Она нам нужна, чтобы сохранить результат вычислений и использовать его дальше внутри блока.

  • Все, что внутри BEGIN … END, выполняется пошагово как мини-программа. Считаем количество строк в таблице users и записываем это значение в объявленную переменную

  • RAISE NOTICE выводит сообщение. % заменяется на значение переменной v_count.

Зачем это нужно

  1. Разовая операция. Хочешь разово обновить данные или проверить что-то — не нужно создавать отдельную функцию.

  2. Тестирование логики. Пробуешь алгоритм, проверяешь, как работает SQL вместе с переменными и условиями.

  3. Быстрое прототипирование. Хочешь понять, как соединить несколько шагов в одну последовательность действий.

Анонимный блок — это как одноразовый скрипт в SQL, который можно писать прямо в базе. Он может быть сложным, с переменными и логикой, но после выполнения исчезает.

Для аналитика это полезно, если нужно быстро посчитать что-то, проверить гипотезу или сделать массовую корректировку данных, не создавая постоянную функцию или процедуру.

В канале Аналитика FM разбираем реальные продуктовые метрики и их реализацию на SQL. Погружаемся в мира аналитики и аналитического мышления.

Если у тебя тоже есть интерес к аналитике,

Подписывайся!

Источник

Теги

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть
Закрыть