我想为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;
..但我收到错误: -
*原因:未找到对象的数据。 *操作:没有来自对象的数据可能是由于提取结束。
我很欣赏有更简单的方法可以获得这些结果,但我试图了解有关循环如何工作的更多信息。
答案 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;