【问题标题】: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 等...

【问题讨论】:

    标签: oracle postgresql plsql cursor plpgsql


    【解决方案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,我尝试过并遇到错误。
    • 您使用的是什么版本的数据库,您遇到的错误是什么?你能发布你的代码吗?
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 2011-12-19
    • 2012-08-22
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多