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

  • 相关阅读:
    django media配置
    django model项目外操作
    django 快捷代码提示
    django静态文件路径配置
    selenium爬取网易云
    selenium
    pyquery
    beautifulsoup
    Kafka与.net core(三)kafka操作
    Oracle 日期类型timestamp(时间戳)和date类型使用
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351751.html
Copyright © 2011-2022 走看看