oracle的显式游标
admin
2023-04-25 00:00:12
0次
declare
  cursor user_cur
  is select * 
  from my_user;
  user_row my_user%rowtype;
  begin
      open user_cur;
      loop
      fetch user_cur into user_row;
      exit when user_cur%notfound;
      dbms_output.put_line(user_row.user_id||'----'||user_row.name);
      end loop;
      close user_cur;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  row_user my_user%rowtype;
  begin
      open user_cur;
      loop
        fetch user_cur into row_user;
        exit when user_cur%notfound;
        dbms_output.put_line(row_user.user_id||'----'||row_user.name||'----'||row_user.age);
      end loop;
      close user_cur;
end;
declare
  cursor row_user
  is select * 
  from my_user;
  type my_user_tab is table of my_user%rowtype;
   /*
   定义和表my_user行对象一致的集合类型cur_row_user,
  用于存放批量得到的数据
  */
  cur_row_user my_user_tab;   
  
  begin
      open row_user;
      loop
        /*从结果集中提取数据,每次提取两行*/
        fetch row_user bulk collect into cur_row_user limit 2;
        /*遍历集合cur_row_user中的数据*/
        for i in 1..cur_row_user.count loop
            dbms_output.put_line(cur_row_user(i).user_id||'----'||cur_row_user(i).name||'----'||cur_row_user(i).age);
        end loop;
        exit when row_user%notfound;
       
      end loop;
      close row_user;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  type my_user_tab is table of my_user%rowtype;
   /*
   定义和表my_user行对象一致的集合类型cur_user_cur,
  用于存放批量得到的数据
  */
  cur_user_cur my_user_tab;   
  
  begin
      open user_cur;
      loop
        /*从结果集中提取数据,每次提取两行*/
        fetch user_cur bulk collect into cur_user_cur limit 2;
        /*遍历集合cur_user_cur中的数据*/
        for i in 1..cur_user_cur.count loop
            dbms_output.put_line(cur_user_cur(i).user_id||'----'||cur_user_cur(i).name||'----'||cur_user_cur(i).age);
        end loop;
        exit when user_cur%notfound;
       
      end loop;
      close user_cur;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  begin
     
        for cdr in user_cur
          loop
            dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
          end loop;
  end;
  /*cursor for loop 不需要特别的申明变量,它可以提取出行对象类型数据*/
declare
  cursor user_cur
  is select * 
  from my_user;
  cdr my_user%rowtype;
  begin
       if user_cur%isopen then
         fetch user_cur into cdr;
         dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
       else dbms_output.put_line('游标没有打开');
       end if;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  cdr my_user%rowtype;
  begin
    open user_cur;
       if user_cur%isopen then
         loop
           fetch user_cur into cdr;
           exit when user_cur%notfound;
           dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
          end loop;  
     else dbms_output.put_line('游标没有打开');
       end if;
  end;
declare
  cursor user_cur
  is select * 
  from my_user;
  cdr my_user%rowtype;
  begin
    open user_cur;
     loop
       fetch user_cur into cdr;
             if user_cur%found then
                dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
             else 
               dbms_output.put_line('游标没有打开');
               exit;
             end if;
     end loop;  
  end;
declare
  /*这里的取值写在declare和begin中都可以*/
  v_user_id my_user.user_id%type:='&v_user_id';
  /*这里的v_user_id的类型写number和my_user.user_id%type都可以*/
  cursor c_my_user(v_user_id my_user.user_id%type)
  is select * 
  from my_user
  where user_id=v_user_id;
  cdr my_user%rowtype;
  
  begin
   
    open c_my_user(v_user_id);
     loop
       fetch c_my_user into cdr;
             if c_my_user%found then
                dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);
             else 
               dbms_output.put_line('游标没有打开');
               exit;
             end if;
     end loop;  
  end;


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...