Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率
BULK COLLECT(成批聚合類型)和數(shù)組集合type類型is table of 表%rowtype index by binary_integer用法筆記。
例1: 批量查詢項(xiàng)目資金賬戶號為 "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
---循環(huán)打印
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 指定是一個(gè)集合的表的數(shù)組類型, 簡單的來說就是一個(gè)可以存儲一列多行的數(shù)據(jù)類型 , my_acct指出在哪個(gè)表上( 存在的表 ) %ROWTYPE 指在表上的行的數(shù)據(jù)類型.
4. INDEX BY BINARY_INTEGER 指索引組織類型
5. v_acct_table 定義一個(gè)變量來存儲集合數(shù)據(jù)類型
6. BULK COLLECT INTO 指是一個(gè)成批聚合類型, 簡單的來說 , 它可以存儲一個(gè)多行多列存儲類型 ,into 后面指定從哪里來 ,
7. v_acct_table.COUNT 用來 v_acct_table 里面的數(shù)量
8. (i)表示下標(biāo)號
例2: 批量更新項(xiàng)目資金賬戶號為 "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數(shù)據(jù)類型一樣
v_fund_table fund_table_type;
2. v_bal_table bal_table_type; 定義變量來存儲它們 .
3. RETURNING 用來指定要返回的部分 ,BULK COLLECT INTO 成批聚合類型
4. 用for 把它們打印出來
總結(jié) :
- 實(shí)驗(yàn)時(shí)把set serveroutput on 打開
- 以上的例子的目的主要是為了提高性能. 這里的性能主要指的是速度 .
- 速度指的是批量插入, 更新 , 刪除 , 為什么會提高速度呢 ? 提取到的數(shù)據(jù)都在內(nèi)存中進(jìn)行處理, 因?yàn)樵趦?nèi)存處理比較快 , 這是常識 .
以上所述是小編給大家介紹的Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Oracle批量插入數(shù)據(jù)的三種方式【推薦】
- C# Oracle批量插入數(shù)據(jù)進(jìn)度條的實(shí)現(xiàn)代碼
- Oracle + Mybatis實(shí)現(xiàn)批量插入、更新和刪除示例代碼
- MyBatis批量插入數(shù)據(jù)到Oracle數(shù)據(jù)庫中的兩種方式(實(shí)例代碼)
- Oracle兩張表關(guān)聯(lián)批量更新其中一張表的數(shù)據(jù)
- mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)
- Oracle批量導(dǎo)入文本文件快速的方法(sqlldr實(shí)現(xiàn))
- Oracle+Mybatis的foreach insert批量插入報(bào)錯(cuò)的快速解決辦法
- Java實(shí)現(xiàn)mybatis批量插入數(shù)據(jù)到Oracle
- Oracle批量執(zhí)行sql語句之禁用所有表的外鍵
- oracle+mybatis 使用動態(tài)Sql當(dāng)插入字段不確定的情況下實(shí)現(xiàn)批量insert
- Oracle 高速批量數(shù)據(jù)加載工具sql*loader使用說明
- Oracle數(shù)據(jù)庫更新大批量數(shù)據(jù)案例
相關(guān)文章
ORACLE應(yīng)用經(jīng)驗(yàn)(1)
ORACLE應(yīng)用經(jīng)驗(yàn)(1)...2007-03-03
oracle遠(yuǎn)程連接服務(wù)器數(shù)據(jù)庫圖文教程
這篇文章主要為大家詳細(xì)介紹了oracle遠(yuǎn)程連接服務(wù)器數(shù)據(jù)庫的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
oracle閃回技術(shù)詳解(閃回表、閃回?cái)?shù)據(jù))
這篇文章主要給大家介紹了關(guān)于oracle閃回技術(shù)(閃回表、閃回?cái)?shù)據(jù))的相關(guān)資料,Oracle數(shù)據(jù)庫的閃回技術(shù)是一種高級的數(shù)據(jù)恢復(fù)技術(shù),它可以幫助用戶快速、精確地恢復(fù)誤刪除或誤修改的數(shù)據(jù),而無需進(jìn)行數(shù)據(jù)恢復(fù)或恢復(fù)備份,需要的朋友可以參考下2023-11-11
ORACLE數(shù)據(jù)庫查看執(zhí)行計(jì)劃的方法
基于ORACLE的應(yīng)用系統(tǒng)很多性能問題,是由應(yīng)用系統(tǒng)SQL性能低劣引起的,所以,SQL的性能優(yōu)化很重要,分析與優(yōu)化SQL的性能我們一般通過查看該SQL的執(zhí)行計(jì)劃,本文就如何看懂執(zhí)行計(jì)劃,以及如何通過分析執(zhí)行計(jì)劃對SQL進(jìn)行優(yōu)化做相應(yīng)說明2012-05-05
從Oracle數(shù)據(jù)庫中讀取數(shù)據(jù)自動生成INSERT語句的方法
今天小編就為大家分享一篇關(guān)于從Oracle數(shù)據(jù)庫中讀取數(shù)據(jù)自動生成INSERT語句的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04
Oracle根據(jù)時(shí)間查詢的一些常見情況匯總
根據(jù)時(shí)間查詢是我們?nèi)粘i_發(fā)中經(jīng)常會遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Oracle根據(jù)時(shí)間查詢的一些常見情況,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
ORACLE中查找定位表最后DML操作的時(shí)間小結(jié)
在Oracle數(shù)據(jù)庫中,如何查找,定位一張表最后一次的DML操作的時(shí)間呢? 方式有三種,不過都有一些局限性,下面簡單的解析、總結(jié)一下。感興趣的朋友跟隨小編一起看看吧2018-11-11

