Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率

来源:http://www.cnblogs.com/beyondzw/archive/2017/04/28/6781656.html
-Advertisement-
Play Games

BULK COLLECT(成批聚合類型)和數組集合type類型is table of 表%rowtype index by binary_integer用法筆記 例1: 批量查詢項目資金賬戶號為 "320001054663"的房屋賬戶信息並把它們列印出來 . 說明部分: 1. DECLARE 說明以 ...


BULK COLLECT(成批聚合類型)和數組集合type類型is table of %rowtype index by binary_integer用法筆記

例1: 批量查詢項目資金賬戶號為 "320001054663"的房屋賬戶信息並把它們列印出來 .

DECLARE 
   TYPE acct_table_type IS TABLE OF my_acct%ROWTYPE INDEX BY BINARY_INTEGER; 
   v_acct_table acct_table_type; 
BEGIN 
    SELECT * BULK COLLECT INTO v_acct_table FROM my_acct WHERE parent_fund='320001054663'; 
    FOR i IN 1..v_acct_table.COUNT LOOP 
           ---迴圈列印  
           dbms_output.put_line('ACCT:'||v_acct_table(i).fund|| ','||v_acct_table(i).bal||','||v_acct_table(i).real_nmbr); 
   END LOOP; 
END;

說明部分:
1. DECLARE  說明以下你要聲明的部分
2. Type 聲明是類型acct_table_typ e 類型的名字
3. IS TABLE OF  指定是一個集合的表的數組類型, 簡單的來說就是一個可以存儲一列多行的數據類型 , my_acct指出在哪個表上( 存在的表 ) %ROWTYPE 指在表上的行的數據類型.
4. INDEX BY BINARY_INTEGER  指索引組織類型
5. v_acct_table 定義一個變數來存儲集合數據類型
6. BULK COLLECT INTO  指是一個成批聚合類型, 簡單的來說 , 它可以存儲一個多行多列存儲類型 ,into 後面指定從哪裡來 ,
7. v_acct_table.COUNT 用來 v_acct_table 裡面的數量
8. (i)表示下標號

 

例2: 批量更新項目資金賬戶號為 "320001054663"的房屋賬戶的餘額。

DECLARE 
   TYPE fund_table_type IS TABLE OF acct.fund%TYPE; 
   TYPE bal_table_type IS TABLE OF acct.bal%TYPE; 
   v_fund_table fund_table_type; 
   v_bal_table bal_table_type; 
BEGIN 
    UPDATE acct SET bal=bal*1000 WHERE parent_fund='320001054663' RETURNING fund,bal BULK COLLECT INTO v_fund_table,v_bal_table; 
    FOR i IN 1..v_fund_table.COUNT LOOP 
           dbms_output.put_line('ACCT:'||v_fund_table(i)||','||v_bal_table(i)); 
   END LOOP; 
END; 

說明部分:
1. %TYPE和 acct.fund數據類型一樣
  v_fund_table fund_table_type;
2. v_bal_table bal_table_type; 定義變數來存儲它們 .
3. RETURNING 用來指定要返回的部分 ,BULK COLLECT INTO  成批聚合類型
4. 用for  把它們列印出來

總結 : 

  • 實驗時把set serveroutput on  打開
  • 以上的例子的目的主要是為了提高性能. 這裡的性能主要指的是速度  .
  • 速度指的是批量插入, 更新 , 刪除  , 為什麼會提高速度呢 ?  提取到的數據都在記憶體中進行處理, 因為在記憶體處理比較快 , 這是常識 .

@author:zhengwei

@date:2017-04-28


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文首發我的主力博客 http://anforen.com/wp/2017/04/android_ksoap2_unexpected_type_position_end_document_null_java_io_inputstreamreader/ jpg圖片文件較小時,比如200KB左右,一般不 ...
  • 找了好幾個都不能使用 試了一下這個 可以使用 放地址:http://www.orsoon.com/Mac/85386.html ...
  • 空指針異常: 04-27 01:13:57.270: E/AndroidRuntime(4942): FATAL EXCEPTION: main04-27 01:13:57.270: E/AndroidRuntime(4942): Process: com.itheima.mobilesafe74, ...
  • 轉載請註明出處: http://www.cnblogs.com/cnwutianhao/p/6772759.html MVP架構模式 大家都不陌生,Google 也給出過相應的參考 Sample, 但是有的人會有疑問為啥 GitHub 上面大神寫的 MVP架構模式 和 Google 的不太一樣。 G ...
  • 獲取新的設備UDID "蒲公英獲取UDID" 新設備中打開以上網址,按照安裝提示即可快速獲取UDID 開發者賬號中註冊新設備 更新項目相關的描述文件 確認之後重新下載描述文件。 確保xcode安裝(雙擊)的本地的描述文件是最新的 為了確保我們現在使用的描述文件與以前的不存在衝突,所以需要把舊的與應用 ...
  • 1. View 的getDrawingCache方法 有時候需要將某個view的內容以圖片的方式保存下來,感覺就和截圖差不多,可以使用View 的getDrawingCache方法,返回一個Bitmap對象。 2. View的getDrawingCache的具體實現 查看View的getDrawin ...
  • 主要涉及兩個技術點:1、圖標加灰色過濾;2、Android的圖片資源預設是靜態的,單實例;如果兩個IM好友的頭像一樣,最簡單的都是用的軟體自帶頭像,有一個線上,一個離線,直接改變頭像的灰度,則兩個用戶的頭像都會變灰或者線上,答案是:Drawable.mutate()。代碼如下: ...
  • 收錄待用,修改轉載已取得 "騰訊雲" 授權 前言 前面總結的幾篇spark踩坑博文中,我總結了自己在使用spark過程當中踩過的一些坑和經驗。我們知道Spark是多機器集群部署的,分為Driver/Master/Worker,Master負責資源調度,Worker是不同的運算節點,由Master統一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...