Amazon redshift 存储过程-为IN子句传递多个值

Amazon redshift 存储过程-为IN子句传递多个值,amazon-redshift,plpgsql,Amazon Redshift,Plpgsql,我正在为Postgres编写一个存储过程,只需从id所在的表中选择*(value1,value2,…) 这些值将从变量中获取 我的代码: 如果我对v_name使用单个值,这实际上是可行的 前任: 但如果我做了多个值,它就不起作用了 帮助1: 它刚刚回了电话,就这样。什么也没发生 帮助2: 有时v_id变量是可选的,因此FOR循环的时间应该包括id=v_id 例: 如果你想返回一些东西,写一个函数而不是一个过程。它只是一个示例代码,我的实际工作负载是获取结果并开始写入其他表和更多进程。所以我用这个

我正在为Postgres编写一个存储过程,只需从id所在的表中选择*(value1,value2,…)

这些值将从变量中获取

我的代码: 如果我对
v_name
使用单个值,这实际上是可行的

前任: 但如果我做了多个值,它就不起作用了

帮助1: 它刚刚回了电话,就这样。什么也没发生

帮助2: 有时
v_id
变量是可选的,因此FOR循环的时间应该包括
id=v_id

例:


如果你想返回一些东西,写一个函数而不是一个过程。它只是一个示例代码,我的实际工作负载是获取结果并开始写入其他表和更多进程。所以我用这个小例子来学习这些基本的东西。红移还是博士后?虽然它们有一些古老的根,但它们非常不同。哦,好的,它代表红移。我认为两者的语法相同。如果我能得到一些指导帮助,我会很高兴的。
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;
$$; 
call record_example('myname',101);
call record_example('myname, your_name',101);
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;