PL/pgSQL 中 PL/SQL %NOTFOUND 的等价物是啥?

Posted

技术标签:

【中文标题】PL/pgSQL 中 PL/SQL %NOTFOUND 的等价物是啥?【英文标题】:What is the equivalent of PL/SQL %NOTFOUND in PL/pgSQL?PL/pgSQL 中 PL/SQL %NOTFOUND 的等价物是什么? 【发布时间】:2010-10-06 14:25:24 【问题描述】:

一切都在标题中。

我在游标上循环,想要

EXIT WHEN curs%NOTFOUND

当没有更多行时,PostgreSQL下的%NOTFOUND相当于什么?

编辑

或其他游标属性 %ISOPEN、%EMPTY 等...

【问题讨论】:

【参考方案1】:

目前无法对此进行测试,但如果您尝试一下呢? 查看章节标题 37.7.3.2。在此链接退出 http://www.postgresql.org/docs/8.2/static/plpgsql-control-structures.html

IF NOT FOUND THEN
    EXIT;
END IF;

EXIT WHEN NOT FOUND;

【讨论】:

它给出错误错误:列“找到”不存在第 1 行:选择未找到代码BEGIN OPEN pan_tan; LOOP FETCH pan_tan INTO rcrd;找不到时退出;【参考方案2】:

FOUND 变量

隐式光标

SELECT * INTO myrec FROM emp WHERE empname = myname;
IF NOT FOUND THEN
    RAISE EXCEPTION 'employee % not found', myname;
END IF;

使用显式游标

...   
    LOOP
        FETCH cursor INTO whatever;
        EXIT IF NOT FOUND;
           do something with whatever
    end LOOP;

【讨论】:

这不是我想要的。我知道这个功能,但在这里您没有使用任何游标,而是使用 SELECT 查询。你明白我的意思了吗? 你试过了吗?由于 IF NOT FOUND,我尝试过并遇到错误。 您使用的是什么版本的数据库,您遇到的错误是什么?你能发布你的代码吗?

以上是关于PL/pgSQL 中 PL/SQL %NOTFOUND 的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

探索GaussDB(DWS)的过程化SQL语言能力

MySQL安装

探索GaussDB(DWS)的过程化SQL语言能力

在 PL/pgSQL 函数中使用变量

关于 Pl/pgsql 中游标的一些错误

使用 PL/pgSQL 检查密钥是不是存在于 JSON 中?