首页 > 解决方案 > libpq 是否支持与 Oracle 的数组绑定等效的东西?

问题描述

Oracle 有一些他们称之为数组绑定的东西(来自 docs),其中发送的 SQL 可能UPDATE mytable SET val = :2 WHERE id = :1与包含内容的数组绑定一起:

1 | val1
2 | val2
3 | val3

(PS。数组的大小> 1000项,3项用于说明。)

这是有效的,并且在服务器的单次往返中完成。

这也可以使用 libpq 吗?

标签: postgresqllibpq

解决方案


如果您的意图是尽量减少往返,那么您可以执行以下操作:

UPDATE mytable m
  SET val = t.val
from ( 
  values (:1, :2), (:3, :4), (:5, :6), ....
) as t(id,val)
WHERE t.id = m.id;

推荐阅读