Как известно, в SQLite нет хранимых процедур.
Предполагается, что вместо них программист реализует нужные функции в своем коде (например, на Python) и зарегистрирует их в SQLite (так называемые application-defined functions).
Но можно добавлять новые функции и прямо из SQL, если установить расширение nalgeon/define:
-- Суммирует числа от 1 до n
select define('sumn', ':n * (:n + 1) / 2');
select sumn(5);
-- 15
Еще пример:
-- Генерит случайное число от 1 до n
select define('randint', ':a + abs(random()) % (:b - :a + 1)');
select randint(10, 99);
-- 67
Расширение также включает функцию eval — можно динамически выполнять SQL из строки:
-- Создаем и заполняем таблицу
select eval('create table tmp(value int)');
select eval('insert into tmp(value) values (1), (2), (3)');
select count(*) from tmp;
-- 3
Как установить расширение