用于 INSERT 行数组的 PL/pgSQL 函数

2023-12-08

我想要一个用 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命令。事实上,甚至可能建议 - 与表定义未来可能发生的更改保持同步。

Call:

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

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

  • 复合类型数组的正确语法
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于 INSERT 行数组的 PL/pgSQL 函数 的相关文章

  • 为什么 hibernate 在一张表中保存两个 @OneToMany 列表?

    想象一下使用 Hibernate 和 JPA 的简化代码如下 Entity class C Id GeneratedValue public long id MappedSuperclass abstract class A Id Gene
  • 我可以在类变量中添加没有指定值的 PHP 数组键吗?

    我目前正在努力通过IBM 关于 CakePHP 的教程 http www 128 ibm com developerworks edu os dw os php cake1 html 有一次我遇到了这段代码
  • PHP - 递归搜索数组中的键和子键,成功时返回键['subkey]

    因此 我编写了一个函数 该函数可以在数组中深入搜索两个级别以查找键和子键对 基本上是在寻找key subkey 如果找到 则返回key subkey 我正在寻找一种以真正递归的方式执行此操作的方法 并根据需要进行尽可能多的深度搜索 直到到达
  • 在 Node.js 中创建 JSON 数组

    我需要在用 Node js 编写的服务器中创建一个 JSON 字符串 以便在请求时发送到客户端 问题是这个 JSON 取决于服务器中的可用数据 因此 JSON 数组的大小并不总是相同 我已经尝试了一整天 但尽管我感觉很接近 但我仍然不明白
  • 奇怪的java字符串数组空指针异常[重复]

    这个问题在这里已经有答案了 这个问题是在实践测试中出现的 创建一个新的字符串数组 将其初始化为空 然后初始化第一个元素并打印它 为什么会出现空指针异常呢 为什么它不打印 一 这与字符串不变性有关吗 public static void ma
  • 过滤任何属性包含值的对象数组

    我想知道根据字符串关键字过滤对象数组的最干净 更好的方法是什么 必须在对象的任何属性中进行搜索 当我打字时lea我想遍历所有对象及其所有属性以返回包含的对象lea 当我打字时italy我想遍历所有对象及其所有属性以返回包含的对象italy
  • 帕斯卡三角形定位

    我编写了一个打印出帕斯卡三角形的Java程序 但是我不知道如何正确定位它 方案1 public class Triangle public static void main System out println nTriangle int
  • 如何过滤掉数组的数组

    您好 我有一个包含多个值的数组 我想尝试过滤掉搜索栏的索引 英语术语的一个例子是这样的 给我名称 Name2 的索引 并通过检查每个索引的第一个值中的所有字符串来执行此操作 Code Multiple Errors var received
  • 如何将字节数组转换为图像 [kotlin]

    我想将字节数组转换为图像并在图像视图中显示它 但不知道该怎么做 有人可以指导我吗 我使用这个函数将位图转换为字节数组 private fun BitmapToByteArray ByteArray val stream ByteArrayO
  • java - IBM-IEEE 双精度浮点字节转换

    我需要在 Java 中对字节数组进行 IBM IEEE 浮点转换 我能够使用成功地进行单精度浮点字节的转换http www thecodingforums com threads c code for converting ibm 370
  • 从备份恢复 PostgreSQL 数据库,没有外键约束问题

    我有一个包含大约 85 个以上表的 postgresql 数据库 我定期使用pg dump 通过 php pgadmin 在复制模式下 备份文件的大小几乎为 10 12 MB 现在我面临的问题是 每当我尝试恢复数据库时 都会出现外键约束问题
  • 如何将自定义类型数组传递给 Postgres 函数

    我有一个自定义类型 CREATE TYPE mytype as id uuid amount numeric 13 4 我想将它传递给具有以下签名的函数 CREATE FUNCTION myschema myfunction id uuid
  • Java中整数数组的排列算法

    我有一个工作示例来生成字符串中的所有字符排列 如下所示 static ArrayList
  • pq:无法调整共享内存段的大小。设备上没有剩余空间

    我在仪表板上有许多面板 数量约为 6 个 用于显示数据点图表 对 PostgreSQL 数据库的 Dockerized 实例进行查询 直到最近 面板都工作正常 有些面板停止工作并报告如下错误 pq 无法将共享内存段 PostgreSQL 2
  • 当名称是数组时如何使用 Javascript 修改 HTML Select

    我有两个同名的 html select 对象 它们是具有不同索引的数组 我想做的是 如果从类别 0 选择元素中选择 关闭 我想禁用类别 1 元素 我一直在尝试使用 document getElementsByName 但无法弄清楚如何专门针
  • 如何在数据库中存储年月?

    是否有在数据库中存储年份和月份的标准方法 我需要根据月份和年份制作一些报告 我无法使用日期和函数实时提取月份 因为表很大 所以我需要预处理 我会和 Michael 的建议是什么 https stackoverflow com a 81694
  • 使用 OpenCV 描述符与 findFundamentalMat 匹配

    我之前发布了有关同一程序的问题 但没有收到答案 我已经纠正了当时遇到的问题 但又面临新的问题 基本上 我使用未校准的方法自动校正立体图像对的旋转和平移 我使用 SURF 等特征检测算法来查找两个图像 左右立体图像对 中的点 然后再次使用 S
  • 如何 grep 遍历数组,同时过滤掉匹配项?

    有没有一种快速简便的方法来 grep 遍历数组 找到满足某些测试的元素and从原始数组中删除这些 例如我想要 a 1 7 6 3 8 4 b grep filter gt 5 a now b 7 6 8 and a 1 3 4 换句话说 我
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE

随机推荐