Oracle for 循環


Oracle for in loop 循環的一些實例,以作學習和加強使用熟練度及場景應用.

一些技巧

  • for 語句后面的 loop end loop 可以類比成 c#/java 等編程語言 for 語句后面的語句塊符號(花括號{}), 以便理解和使用.

一些實例

循環輸出數值

-- 循環輸出數值
begin
  for i in 1 .. 100 loop
    sys.dbms_output.put_line(i);
  end loop;
end;

循環累加

-- 循環累加
declare
  var_sum number := 0;
begin
  for i in 1 .. 100 loop
    var_sum := var_sum + i;
  end loop;
  sys.dbms_output.put_line(var_sum); -- 5050
end;

批量插入

-- 批量插入
begin
  for i in 1 .. 100 loop
    -- todo: insert into some_table(field1, field2, ..., fieldN) values(valie1, value2, ..., valueN);
    sys.dbms_output.put_line('insert: ' || to_char(i));
  end loop;
  commit;
  sys.dbms_output.put_line('多次insert,統一commit');
end;

批量更新

-- 批量更新
begin
  for i in 1 .. 100 loop
    -- todo: update some_table set fieldN = valueN where fieldN = valueN;
    sys.dbms_output.put_line('update: ' || to_char(i));
  end loop;
  commit;
  sys.dbms_output.put_line('多次update,統一commit');
end;

循環輸出用戶表信息

-- 查詢你能管理的所有用戶信息
select user_id, username, created from all_users;

-- 循環輸出用戶表信息
begin
  for cur_row in (select user_id, username, created from all_users) loop
    sys.dbms_output.put_line(cur_row.username);
  end loop;
end;
-- 當循環對象是比較長串的SQL時,建議提取游標,方便后續查看和維護

循環輸出用戶表信息(游標提取)

-- 循環輸出用戶表信息(游標提取)
declare
  -- 提取游標對象,方便單獨維護SQL
  cursor cursor_all_users is
    select user_id, username, created from all_users;
  -- 游標子項(更多的時候,表是動態表,所以這句聲明也可以省略)
  -- cursor_user all_users%rowtype;
begin
  for cursor_user in cursor_all_users loop
    dbms_output.put_line(cursor_user.username);
  end loop;
end;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM