如何将数据插入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;
我有一个如下所示的伪存储过程:
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;