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;

以上就是這篇文章的全部內容瞭,希望本文的內容對大傢的學習或者工作具有一定的參考學習價值,謝謝大傢對WalkonNet的支持。如果你想瞭解更多相關內容請查看下面相關鏈接

推薦閱讀: