斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          cursor游標

          Posted on 2010-07-24 16:14 斷點 閱讀(246) 評論(0)  編輯  收藏 所屬分類: Oracle DBA

          --游標
          declare
            cursor c is
              select * from emp;
            v_emp c%rowtype;
          begin
            open c;
            loop
              fetch c into v_emp;
              exit when(c%notfound);
              dbms_output.put_line(v_emp.ename);
            end loop;
            close c;
          end;

          declare
            cursor c is
              select * from emp;
            v_emp emp%rowtype;
          begin
            open c;
            fetch c into v_emp;
              while(c%found) loop
                dbms_output.put_line(v_emp.ename);
                fetch c into v_emp;
                --fetch c into v_emp; 導致第一條沒有打印,最后一條打印2遍。
                --dbms_output.put_line(v_emp.ename);
            end loop;
            close c;
          end;


          declare
            cursor c is
              select * from emp;
          begin
            for v_emp in c loop
              dbms_output.put_line(v_emp.ename);
            end loop;
          end;


          --帶參數的游標
          declare
            cursor c(v_deptno emp.deptno%type,v_job emp.job%type)
            is
              select ename,sal from emp where deptno =v_deptno and job= v_job;
              --v_temp c%rowtype;
          begin
            for v_temp in c(30,'CLERK') loop  --for自動打開游標。
              dbms_output.put_line(v_temp.ename);
            end loop;
          end;


          --可更新的游標
          declare
            cursor c
            is
              select * from emp2 for update;
              --v_temp c%rowtype;
          begin
            for v_temp in c loop 
              if(v_temp.sal <2000) then
                update emp2 set sal = sal*2 where current of c;
              elsif(v_temp.sal = 5000) then
                delete from emp2 where current of c;
              end if;
            end loop;
            commit;
          end;

          主站蜘蛛池模板: 松江区| 新干县| 仙居县| 新和县| 宁陵县| 大足县| 乾安县| 昭平县| 黄梅县| 营山县| 堆龙德庆县| 青冈县| 乐亭县| 晴隆县| 庆元县| 大英县| 长顺县| 永安市| 故城县| 昭平县| 和顺县| 荥经县| 康乐县| 栖霞市| 泾阳县| 上虞市| 泸水县| 贡山| 调兵山市| 华亭县| 股票| 南部县| 平武县| 思茅市| 平远县| 屏山县| 肥东县| 甘谷县| 千阳县| 成武县| 峡江县|