我有一个伪存储过程,如下所示:
CREATE OR REPLACE FUNCTION get_data()
RETURNS void AS $$
DECLARE
rec_new RECORD;
querystring TEXT[];
cursor_file CURSOR FOR
select * from tableA;
BEGIN
--open the file cursor
OPEN cursor_file;
LOOP
FETCH cursor_file into rec_new;
EXIT WHEN NOT FOUND;
querystring='{insert into tableB(fileid) values %}',rec_new.fileid;
END LOOP;
CLOSE cursor_file;
END; $$
LANGUAGE plpgsql;
我想创建多个插入查询,并在循环中迭代动态fileId并将它们放入以逗号定界符分隔的字符串数组('querstring')
中。上面的代码没有给我确切的结果。实现此目的的正确方法是什么?
预期输出如下:
{insert into tableB(fileid) values ('fileA'),
insert into tableB(fileid) values ('fileB'),
insert into tableB(fileid) values ('fileC')}
然后还需要执行此querystring
数组。
答案 0 :(得分:0)
您可能正在寻找“数组追加”运算符||
。
但这是解决问题的过于复杂的方法。您可以使用以下类似的方法更简单,更有效地完成此任务:
SELECT array_agg(
format(
'insert into tableB(fileid) values (%L)',
fileid
)
) INTO querystring
FROM tablea;