首页 > 解决方案 > 从 Oracle 循环输出变量结果

问题描述

我想STATEMENT_NUMBER为每条记录输出ID10 到 40 之间的记录

我尝试写以下内容:-

DECLARE
    tempid       NUMBER := 10;
    tempresult   VARCHAR2(20);
BEGIN
    LOOP
        SELECT
            statement_number
        INTO
            tempresult
        FROM
            tblstatementsnew
        WHERE
            id = tempid;

        dbms_output.put_line(tempresult);
        tempid := tempid + 1;
        EXIT WHEN tempid = 40;
    END LOOP;
END;

..但我得到了错误:-

*原因:没有从对象中找到数据。*操作:对象中没有数据,这可能是由于提取结束。

我很欣赏有更简单的方法来获得这些结果,但我正在尝试更多地了解循环是如何工作的。

标签: sqloracle

解决方案


我希望您的代码比打印语句更复杂。但是,请考虑使用隐式游标:

BEGIN
    FOR v_tempresult IN (SELECT statement_number 
                           FROM tblstatementsnew 
                           WHERE id BETWEEN 10 AND 40)
    LOOP
        dbms_output.put_line(v_tempresult.statement_number);
    END LOOP;
END;

推荐阅读