1. 程式人生 > >Oracle 循環遊標

Oracle 循環遊標

-- 查詢員工號,姓名,職位
declare
  -- 定義遊標
  cursor mycur is select empno,ename,job from emp;
  v_empno emp.empno%type;
  v_ename emp.ename%type;
  v_job emp.job%type;
begin
  -- 開啟遊標
  open mycur;
  -- 提取資料
  loop
       fetch mycur into v_empno,v_ename,v_job;
       dbms_output.put_line('員工編號:'||v_empno||'員工名稱:'||v_ename||'員工職位:'||v_job);
       -- 什麼時候能夠退出迴圈
       -- exit when mycur%notfound; 
       -- exit when not mycur%found;
       exit when mycur%rowcount=5;
  end loop;
  -- 關閉遊標
  close mycur;
  exception 
    when others then
      dbms_output.put_line('出錯'||sqlerrm);
end;

-- 使用循環遊標
declare
  -- 定義遊標
  cursor mycur is select empno,ename,job from emp;
begin
  for record in mycur loop
    dbms_output.put_line('員工編號:'||record.empno||'員工名稱:'||record.ename||'員工職位:'||record.job);
  end loop;
  exception 
    when others then
      dbms_output.put_line('出錯'||sqlerrm);
end;

-- for後面直接接select語句
begin
  for record in (select empno,ename,job from emp) loop
    dbms_output.put_line('員工編號:'||record.empno||'員工名稱:'||record.ename||'員工職位:'||record.job);
  end loop;
  exception 
    when others then
      dbms_output.put_line('出錯'||sqlerrm);
end;