如何在 pl/pgsql 中获取 foreach 中的当前键?

2023-12-07

我迭代一个数组,并对数组值及其键执行一些操作。从PostgreSQL 9.1开始有了foreach循环,所以数组值没有问题,但是有什么优雅的方法来获取key吗?我发现的唯一解决方案是为此维护额外的变量:

CREATE OR REPLACE FUNCTION foobar( bar integer[] ) RETURNS integer AS $$
DECLARE
  foo integer;
  barkey integer;
BEGIN
  barkey := 1;
  FOREACH foo IN ARRAY bar LOOP
    -- do some stuff using foo and barkey
    barkey := barkey + 1;
  END LOOP;
END;
$$ LANGUAGE plpgsql;

这是最好的解决方案,还是有更优雅的解决方案?


FOREACH用于循环遍历数组值的元素,而不是通过它们的键。FOR or generate_subscripts()可以用于此目的。

但一般来说,数组的键和值之间不应该有任何关系。

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

如何在 pl/pgsql 中获取 foreach 中的当前键? 的相关文章

随机推荐

  • 反应寄存器错误不显示

    我正在链接 Web 应用程序的正面和背面 并且在注册部分中 我无法向 UI 显示验证和服务器错误消息 当执行错误注册时 我收到 400 和 401 状态我想显示的消息位于 Axioserror gt response gt data gt
  • 尝试构建正则表达式来检查模式

    a 以数字开头和结尾b 连字符应以数字开头和结尾c 逗号应以数字开头和结尾d 数字范围应为 1 31 编辑 在正则表达式中需要这条规则 谢谢 Ed Heal e 如果数字以连字符 开头 则不能以逗号以外的任何其他字符结尾 并且遵循上面列出的
  • 是否可以在堆栈上创建类的实例?

    我知道在 C 中你可以在堆栈上创建类的实例 例如 MyClass mc MyClass 8 2 或者像在堆上 MyClass mc new MyClass 8 2 你能在 C 中做同样的事情吗 我在 C 中创建类的唯一方法是newing i
  • 使用 R 从 API 中提取数据

    我可以访问 azure 中的一些遥测数据 特别是使用移动应用程序的客户的所有 API 调用 我已经使用 R 中的 httr 包来请求 3 分钟内的数据 并像这样评估响应 显然有我自己的应用程序 ID 和密钥 下面我没有包含 install
  • MySQL INNER JOIN 仅从第二个表中选择一行

    我有一个users表和一个payments表中 对于每个有付款的用户 在表中可能有多个关联的付款payments桌子 我想选择所有有付款的用户 但只选择他们最新的付款 我正在尝试这个 SQL 但我以前从未尝试过嵌套 SQL 语句 所以我想知
  • 如何获取另一个jar中的资源

    我有一个嵌入在捆绑包中的 jar 需要获取与其打包的资源 如下所示 MyBundle src lib MyEmbeddedJar src SomeClass someResource xml 我正在尝试从 SomeClass 访问 some
  • 使用 Macports 偷偷修补源代码

    几乎自从我使用 vim 并了解了足够多的 C 语言以来 我就自定义了已安装的 vim 以删除令我烦恼的 功能 当我改用带有 macports 的 Mac 时 我通过卸载以前的任何 vim 端口 获取源代码 手动编辑源代码 然后让 Macpo
  • Typescript 部分类型推断

    我对此感到困惑 无法弄清楚如何在没有第二个功能的情况下做到这一点 interface Fixed a number const fn
  • Rust HRTB 是相同的,但编译器表示一种类型比另一种更通用

    The 以下代码是完整的类型注释 fn enter lt a F R gt x a i32 func F gt R where F for lt b gt FnOnce b i32 gt R func x fn identity lt a
  • 访问类型声明对释放的影响

    在这两种情况下 在声明块之后 当然是在过程结束之前 是否以相同的方式释放内存 procedure allocation is type T Integer Access is access Integer begin declare P T
  • 如何将 HTML 内容设置到 iframe 中

    我有一个 HTML 字符串 Hello world 我想用 JavaScript 将其设置为 iframe 我试图像这样设置 HTML contentWindow document body innerHTML or contentDocu
  • 变量+=值和变量=变量+值之间的区别;

    例如 int a 10 a 1 5 这运行得很完美 但是 a a 1 5 这个作业说Type mismatch cannot convert from double to int 所以我的问题是 有什么区别 operator and ope
  • 无法加载现代控件 UI。升级到最新版本的 Android YouTube API

    我正在尝试使用Android Youtube API 一切正常 除了当我扩展时AppCompatActivity YoutubePlayer 的 UI 看起来很糟糕 我都尝试过YoutubePlayerFragment and Youtub
  • GIT - 如何合并分支?

    我们决定在公司使用 GIT 但现在遇到了问题 我们有多个分行 各具特色 现在我们需要的是合并这些分支并将其推送到 Master 我们如何使用自动替换来做到这一点 我们有分支 a 分支 b 分支 c 我们需要将它们全部放入主文件中 但如果出现
  • Java - 循环二维数组来查找不起作用的值的索引

    我知道我在这段代码中的某个地方犯了错误 但我无法弄清楚 玩家1 getId 返回值 1 只是为了让您知道 我正在尝试打印值为 1 的数组的索引 在代码末尾 我预计 currentX 为 0 currentY 为 0 但它们都是 9 任何帮助
  • Cx_Freeze 构建不包括 zip 文件中的 python 库

    我在使用 cx Freeze 5 0 时遇到了麻烦 我正在尝试 Windows 10 LTSB x64 Python 3 4 4 x86 PyQt5 PyWin32 x86 在我重新安装 Windows 10 之前 这个过程从未遇到过任何问
  • 无法在我的 Windows 10 上安装“Turicreate”

    我是 Python 新手 我正在尝试按照教程构建推荐引擎 教程要求我安装 turicreate 我在 Anaconda 上运行 Spyder 3 3 0 Python 版本 3 5 我尝试过的 我从各种 SO 问题以及 github 中寻求
  • 如何监控特定应用程序的网络带宽使用情况?

    我正在尝试学习如何监视特定应用程序的网络带宽使用情况 我正在看IPv4InterfaceStatistics 但这似乎是监视网卡的性能 我想监视特定应用程序以查看每秒消耗多少带宽 有谁知道如何做到这一点的例子 using System us
  • 如何为 R igraph 中的某些边分配边权重

    我想为最短路径中使用的某些边分配一个小的非负边权重 这是一个示例图 library igraph data lt read table text 1 2 1 4 1 5 2 3 2 4 3 4 5 7 5 8 3 6 header FALS
  • 如何在 pl/pgsql 中获取 foreach 中的当前键?

    我迭代一个数组 并对数组值及其键执行一些操作 从PostgreSQL 9 1开始有了foreach循环 所以数组值没有问题 但是有什么优雅的方法来获取key吗 我发现的唯一解决方案是为此维护额外的变量 CREATE OR REPLACE F