zoukankan      html  css  js  c++  java
  • begin和declare

    begin
    for i in 1..100000
    loop
    insert into test1 values(i,'a'||i);
    end loop;
    end;
    
    SQL> select min(id),max(id) from test1;
    
       MIN(ID)    MAX(ID)
    ---------- ----------
    	 1    1000000
    
    DECLARE
      CURSOR cur IS
        SELECT a.ROWID from test1 a where a.id < 90000;
      V_COUNTER NUMBER;
    BEGIN
      V_COUNTER := 0;
      FOR row IN cur LOOP
        UPDATE test1 SET id = 9999 WHERE ROWID = row.ROWID;
        V_COUNTER := V_COUNTER + 1;
        IF (V_COUNTER >= 10000) THEN
          COMMIT;
          V_COUNTER := 0;
        END IF;
      END LOOP;
      COMMIT;
    END;
    
    
    
    改用begin块:
    
    CREATE OR REPLACE PROCEDURE procs1 AS
    begin
    DECLARE
      CURSOR cur IS
        SELECT a.ROWID from test1 a where a.id < 90000;
      V_COUNTER NUMBER;
    BEGIN
      V_COUNTER := 0;
      FOR row IN cur LOOP
        UPDATE test1 SET id = 9999 WHERE ROWID = row.ROWID;
        V_COUNTER := V_COUNTER + 1;
        IF (V_COUNTER >= 10000) THEN
          COMMIT;
          V_COUNTER := 0;
        END IF;
      END LOOP;
      COMMIT;
    END;
    end;
    
    SQL> SELECT MIN(ID),MAX(ID) FROM TEST1;
    
       MIN(ID)    MAX(ID)
    ---------- ----------
    	 1     100000
    
    SQL> EXEC PROCS1;
    
    
    SQL> SELECT MIN(ID),MAX(ID) FROM TEST1;
    
       MIN(ID)    MAX(ID)
    ---------- ----------
    	 1     100000
    
    SQL> EXEC PROCS1;
    
    PL/SQL 过程已成功完成。
    
    SQL> SELECT MIN(ID),MAX(ID) FROM TEST1;
    
       MIN(ID)    MAX(ID)
    ---------- ----------
          9999     100000

  • 相关阅读:
    单词统计
    第十周学习进度
    个人课程总结
    构建之法阅读笔记03
    构建之法阅读笔记02
    构建之法阅读笔记01
    第十六周学习报告
    计算最长英语单词链
    第十五周学习报告
    用户体验评价
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351751.html
Copyright © 2011-2022 走看看