从Oracle循环输出变量结果

时间:2018-04-25 14:13:24

标签: sql oracle

我想为STATEMENT_NUMBER介于10到40之间的每条记录输出ID

我尝试写下面的内容: -

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;

..但我收到错误: -

*原因:未找到对象的数据。 *操作:没有来自对象的数据可能是由于提取结束。

我很欣赏有更简单的方法可以获得这些结果,但我试图了解有关循环如何工作的更多信息。

1 个答案:

答案 0 :(得分:2)

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

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;