我有一个表test1(id,loop)   里面的数字是不连续的,,我像把他们都输出,,declare 
v_id number;
v_value VARCHAR2(10);
v_count NUMBER;
begin
  SELECT max(id) into v_count from test1;
   begin
    while v_count>0
    loop
      v_count := count-1;
      dbms_output.put_line(v_count);
      select id,value into v_id,v_value from test1 where id := v_count;
      dbms_output.put_line(v_id);
      dbms_output.put_line(v_value);
    end loop;
   end;
end;
请问用游标怎么遍历表test1,,并且把数据全部输出,,,我没有多少分了,,,,麻烦哪位高手帮我写一下,,谢谢

解决方案 »

  1.   


     v_count := count-1;
    --你写错了,改过来试下
     v_count := v_count-1;有空我帮你写个例子吧
      

  2.   

    declare 
    v_id number;
    v_value VARCHAR2(10);
    v_count NUMBER;
    begin
      SELECT max(id) into v_count from test1;
       begin
        while v_count>0
        loop
          dbms_output.put_line(v_count);
          select id,value into v_id,v_value from test1 where id := v_count;
          dbms_output.put_line(v_id);
          dbms_output.put_line(v_value);
          dbms_output.put_line('陈');
          v_count := v_count-1;
        end loop;
       end;
    end;
      

  3.   

    select id,value into v_id,v_value from test1 where id := v_count;
    这里不是赋值语句了,用=号
    另外,游标的使用,无论书本还是网上,都是一堆的例子,楼主应该可以自己找答案好些。
      

  4.   


      select id,value into v_id,v_value from test1 where id = v_count;--此处不用两点--简单点
    declare 
    cursor cur is select * from test1;
    begin
    for rec in cur
        loop
        dbms_output.put_line(rec.id);
    dbms_output.put_line(rec.value);
    end loop;
    end;
    /
      

  5.   


    declare 
    cursor cur is select * from test1;
    begin
    for rec in cur
        loop
        dbms_output.put_line(rec.id);
    dbms_output.put_line(rec.value);
    end loop;
    end;
    /