我有一个 SQL Developer 查询,我想在其中使用游标来生成后续的选择语句。
但是,我做错了什么。我似乎没有正确使用光标。
到目前为止,这是我的代码。非常感谢。
DECLARE
numMaterials NUMBER := 0;
CURSOR item_id_cur
IS
select id from item_h
where value = 'myvalue';
l_item_id item_id_cur%ROWTYPE;
BEGIN
OPEN item_id_cur;
LOOP
FETCH item_id_cur INTO l_item_id;
EXIT WHEN item_id_cur%NOTFOUND;
SELECT count(*)
INTO numMaterials
FROM item_material_h
WHERE fk_item = l_item_id; --Does NOT like this line!!
DBMS_OUTPUT.put_line (numMaterials);
END LOOP;
END;
您必须引用特定的列,即
因为
或者,您可以声明
然后像你已经做的那样使用它:
不要忘记关闭光标!
您可能感兴趣的另一个选项是游标 FOR 循环,它比您使用的循环更简单,因为 Oracle 代替您做了很多事情:您不必显式声明游标(只需将 select 语句放入循环中)也不必显式声明游标变量,打开或关闭光标也不用担心退出循环: