Я пишу хранимую процедуру для Postgres, просто сделайте select * from table where id in (value1, value2, ...)
.
Эти значения будут получены из переменной.
Мой код:
CREATE OR REPLACE PROCEDURE record_example(v_name varchar(100), v_id int)
LANGUAGE plpgsql
AS $$
DECLARE
rec RECORD;
BEGIN
FOR rec IN select id, updated from mytable where names in (v_name) and id=v_id
LOOP
RAISE INFO 'id = % and updated = %', rec.id, rec.updated;
END LOOP;
END;
$$;
Это на самом деле работает, если я использую одно значение для v_name
.
Пример:
call record_example('myname',101);
Но если я сделаю несколько значений, это не работает.
HELP 1:
call record_example('myname, your_name',101);
Это просто вернуло CALL, вот и все. Ничего не произошло.
HELP 2:
Иногда переменная v_id
является необязательной, поэтому время цикла FOR должно включать id=v_id
Пример:
FOR rec IN select id, updated from mytable where names in (v_name)
LOOP
RAISE INFO 'id = % and updated = %', rec.id, rec.updated;
END LOOP;