Devs Hive
Повернутися до всіх запитань

Яка різниця між Functions і Procedures в SQL?

DatabasesJuniorMiddle
Зустрічали на інтервʼю:0 користувачів

Як і в інших мовах програмування, в SQL функція має повертати значення. Концептуально, вона використовується для інкапсуляції бізнес логіки з подальшим перевикористанням. Також, функція може використовуватись в запиті.

Розберемо приклад функції

Тут ми інкапсулюємо бізнес логіку, яку потім можемо перевикористовувати. В цілому, концепція SQL функцій нічим не відрізняється від звичайних.

CREATE OR REPLACE FUNCTION user_level(points integer)
RETURNS text
LANGUAGE sql
IMMUTABLE
AS $$
SELECT CASE
WHEN points >= 1000 THEN 'gold'
WHEN points >= 500 THEN 'silver'
WHEN points >= 100 THEN 'bronze'
ELSE 'starter'
END;
$$;


SELECT id, points, user_level(points) AS level
FROM users;

Процедури найчастіше використовується для різних jobs(наприклад пофіксити криві дані), міграцій або реалізації простих workflows, які використовуються BA(business analyst) і їх немає сенсу додавати в кодову базу проекту.

Важливо розуміти, що процедури не повертають значення тому не використовуються в SQL запитах, а викликаються через ключове слово CALL.

Зустрічав на інтервʼю?

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!