【发布时间】:2017-06-09 16:08:28
【问题描述】:
我在循环光标时遇到问题
我有多个 location_name 条目,我尝试一次显示 5 个,并将其设置为 look_item_cursor。
CURSOR look_item_cursor IS
SELECT *
FROM (SELECT DISTINCT location_name
FROM inventory_info_v i
WHERE i.item_code = lr_item.item_code) a
WHERE rownum <= (ln_page + 4)
AND rownum >= ln_page;
原始查询返回数据就好了。 调用光标时,ln_page 和 lr_item.item_code 都已填充。
我尝试检索 5 个返回的 location_name 中的每一个,一次一个,使用
OPEN look_item_cursor;
BEGIN
FOR lv_location_name IN look_item_cursor LOOP
pv_message_return := pv_message_return ||
lv_location_name.location_name;
END LOOP;
END;
CLOSE look_item_cursor;
将 lv_location_name 分配为
look_item_cursor%ROWTYPE
但是,当它通过查询运行时,我遇到了一般异常,我不知道为什么。任何帮助将不胜感激!
【问题讨论】:
-
请发布完整的堆栈跟踪。
-
如果您使用 cursor
FOR循环(就像您在示例中尝试做的那样),那么 1. 不要显式打开游标(cursorFOR循环会为您执行此操作); 2.不要像你所说的那样显式声明游标循环变量lv_location_name变量(游标FOR循环为你做)。因此,您要么显式使用游标(显式打开、获取和关闭),要么使用游标FOR循环,它为您完成大部分工作(打开游标、声明游标变量、获取和关闭游标)。 -
非常有帮助,谢谢。对于这种类型的循环,我是否需要包含“退出时间”?我问是因为它在分配第 5 个和最后一个条目时出错 编辑:没关系,那是愚蠢的。非常感谢
标签: oracle for-loop plsql cursor