хранимая процедура - передать несколько значений для предложения IN - PullRequest
0 голосов
/ 05 октября 2019

Я пишу хранимую процедуру для 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...