gpt4 book ai didi

arrays - PL/pgSQL 函数插入行数组

转载 作者:行者123 更新时间:2023-11-29 14:03:44 25 4
gpt4 key购买 nike

我想要一个用 PL/pgSQL 编写的函数,它接受类似“行的集合”之类的参数,我的意思是我需要将类似字典的结构传递给该函数。

伪代码:

function_name({key1:val1,key2:val2, key3:val3 [, ...] })

怎么做?

最佳答案

使用现代 PostgreSQL,您可以简化这样的功能。
测试设置:

CREATE TABLE tbl1 (id int, value text);

在这种情况下无需显式创建类型(如果类型基于表行),它会为每个表隐式创建。
功能:

CREATE FUNCTION f_insert_rows_into_tbl1(tbl1[])
RETURNS void
LANGUAGE sql AS
$func$
INSERT INTO tbl1 -- rare case where it's safe to omit target columns
SELECT *
FROM unnest($1) sub;
$func$;

由于复合行类型是子查询中的唯一列,它会在外部 SELECT 中自动分解。

由于输入类型由表行定义,因此这是为 INSERT 命令省略目标列是安全的极少数情况之一。事实上,甚至可能建议与表定义的 future 可能更改保持同步。

调用:

SELECT f_insert_rows_into_tbl1('{"(1,foo)","(2,bar)"}');

注意行数组的输入语法!如果您不确定正确的语法,请参阅:

关于arrays - PL/pgSQL 函数插入行数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com