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

  • 相关阅读:
    基础数据补充
    购物车
    小数据池、深浅拷贝和集合
    列表、元组和range
    小数据池、深浅拷贝和集合练习
    字典
    字符串练习
    列表练习
    练习
    字典练习
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351751.html
Copyright © 2011-2022 走看看