Tenho uma consulta SQL Developer na qual gostaria de usar um cursor para gerar instruções de seleção subsequentes.
Mas estou fazendo algo errado. Parece que não estou usando o cursor corretamente.
Aqui está o meu código até agora. Muito obrigado.
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;
Você deve fazer referência a uma coluna específica, ou seja
por causa de
Alternativamente, você poderia ter declarado
e use-o como você já fez:
Não se esqueça de fechar o cursor!
Outra opção na qual você pode estar interessado é um loop FOR de cursor que é mais simples do que aquele que você usou porque o Oracle faz muitas coisas em vez de você: você não precisa declarar explicitamente o cursor (basta colocar a instrução select no loop) nem a variável do cursor , abra nem feche o cursor nem se preocupe em sair do loop: