尝试从游标访问值时出错

时间:2012-08-22 05:18:38

标签: sql plsql

假设名为cur(param_1 number,param_2 varchar2)的游标返回三个值,如bellow

place    name     value
pl1      mango    good
pl2      grapes   not good
pl3      apple    good
pl4      orange   very good 

如何从这个游标单独获取每个值并执行操作,就像我想要pl1并执行此操作

for y in cur1(param_1,param_2) loop
if y.place='pl1' then
do this
elsif y.place='pl2' then
do this
else 
do this.
end if;

在我的程序中出现错误说

  

错误:'pls-00364:循环索引变量'y'使用无效'。

有任何建议吗?

1 个答案:

答案 0 :(得分:1)

您在循环中使用索引值y

像这段代码SQL Fiddle应该有用,至少它对我有用。

DECLARE
  CURSOR cur(param_1 number,param_2 varchar2) IS
     SELECT place, name, value FROM product;

  auxCur cur%ROWTYPE;

BEGIN
  FOR y IN cur(1,'2') LOOP
    IF auxCur.place = 'pl1' THEN
        dbms_output.put_line('1');
      ELSIF auxCur.place = 'pl2' THEN
        dbms_output.put_line('2');
      ELSE
        dbms_output.put_line('3');
    END IF;
  END LOOP;
END;