如何将数据插入postgres存储过程中的String数组

How to insert data into a String array in postgres stored procedure

我有一个如下所示的伪存储过程:

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数组也需要执行。

您可能正在寻找“数组追加”运算符 ||

但这是一种过于复杂的解决问题的方法。您可以使用

之类的方法更简单、更有效地完成它
SELECT array_agg(
          format(
             'insert into tableB(fileid) values (%L)',
             fileid
          )
       ) INTO querystring
FROM tablea;