Рекурсивная процедура

132
10 сентября 2019, 21:10

По сути мне нужна была рекурсивная функция, но я прочитал что функции в mysql не могут быть рекурсивными, так что сделал процедуру. Только она не работает почему-то...

create table test (id int, next_id int null default null);
insert into test values (1, 2), (2, 3), (3, null);
create procedure getLastId(in in_id int, out out_id int)
begin
    set max_sp_recursion_depth = 50;
    select next_id into out_id from test where id = in_id;
    if not out_id is null then
        call getLastId(out_id, out_id);
    end if;
end;
set @out_id = null;
call getLastId(1, @out_id);
select @out_id;

Выбирается null. А должно 3. Почему так происходит?

READ ALSO
Использование partition pruning на реплике в формате binlog_format = ROW

Использование partition pruning на реплике в формате binlog_format = ROW

Всем приветКто-нибудь может подсказать, будет ли использоваться оптимизация partition pruning на реплике, если запрос прилетел в ROW формате?

109
Весьма сложный запрос MySQL

Весьма сложный запрос MySQL

Вообщем поскольку я не особо силён в сложных запросах sql нужна ваша помощьЕсть 3 таблицы выглядят так:

136
Как восстановить работу цикла

Как восстановить работу цикла

Подскажите как мне починить цикл? Моя программа работала в консоли, принимала значение и отправляла в бд

132