Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率
BULK COLLECT(成批聚合類(lèi)型)和數(shù)組集合type類(lèi)型is table of 表%rowtype index by binary_integer用法筆記。
例1: 批量查詢項(xiàng)目資金賬戶號(hào)為 "320001054663"的房屋賬戶信息并把它們打印出來(lái) .
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;
說(shuō)明部分:
1. DECLARE 說(shuō)明以下你要聲明的部分
2. Type 聲明是類(lèi)型acct_table_typ e 類(lèi)型的名字
3. IS TABLE OF 指定是一個(gè)集合的表的數(shù)組類(lèi)型, 簡(jiǎn)單的來(lái)說(shuō)就是一個(gè)可以存儲(chǔ)一列多行的數(shù)據(jù)類(lèi)型 , my_acct指出在哪個(gè)表上( 存在的表 ) %ROWTYPE 指在表上的行的數(shù)據(jù)類(lèi)型.
4. INDEX BY BINARY_INTEGER 指索引組織類(lèi)型
5. v_acct_table 定義一個(gè)變量來(lái)存儲(chǔ)集合數(shù)據(jù)類(lèi)型
6. BULK COLLECT INTO 指是一個(gè)成批聚合類(lèi)型, 簡(jiǎn)單的來(lái)說(shuō) , 它可以存儲(chǔ)一個(gè)多行多列存儲(chǔ)類(lèi)型 ,into 后面指定從哪里來(lái) ,
7. v_acct_table.COUNT 用來(lái) v_acct_table 里面的數(shù)量
8. (i)表示下標(biāo)號(hào)
例2: 批量更新項(xiàng)目資金賬戶號(hào)為 "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;
說(shuō)明部分:
1. %TYPE和 acct.fund數(shù)據(jù)類(lèi)型一樣
v_fund_table fund_table_type;
2. v_bal_table bal_table_type; 定義變量來(lái)存儲(chǔ)它們 .
3. RETURNING 用來(lái)指定要返回的部分 ,BULK COLLECT INTO 成批聚合類(lèi)型
4. 用for 把它們打印出來(lái)
總結(jié) :
- 實(shí)驗(yàn)時(shí)把set serveroutput on 打開(kāi)
- 以上的例子的目的主要是為了提高性能. 這里的性能主要指的是速度 .
- 速度指的是批量插入, 更新 , 刪除 , 為什么會(huì)提高速度呢 ? 提取到的數(shù)據(jù)都在內(nèi)存中進(jìn)行處理, 因?yàn)樵趦?nèi)存處理比較快 , 這是常識(shí) .
以上所述是小編給大家介紹的Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(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ù)庫(kù)中的兩種方式(實(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語(yǔ)句之禁用所有表的外鍵
- oracle+mybatis 使用動(dòng)態(tài)Sql當(dāng)插入字段不確定的情況下實(shí)現(xiàn)批量insert
- Oracle 高速批量數(shù)據(jù)加載工具sql*loader使用說(shuō)明
- Oracle數(shù)據(jù)庫(kù)更新大批量數(shù)據(jù)案例
相關(guān)文章
oracle連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12170:TNS連接超時(shí)解決辦法
這篇文章主要給大家介紹了關(guān)于oracle連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12170:TNS連接超時(shí)的解決辦法,ORA-12170是Oracle數(shù)據(jù)庫(kù)連接錯(cuò)誤,表示數(shù)據(jù)庫(kù)連接超時(shí),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Windows下編寫(xiě)批處理腳本來(lái)啟動(dòng)和重置Oracle數(shù)據(jù)庫(kù)
這篇文章主要介紹了Windows下編寫(xiě)cmd腳本來(lái)對(duì)Oracle數(shù)據(jù)庫(kù)執(zhí)行啟動(dòng)和重置的方法,只需在bat文件中保存cmd shell之后就可以雙擊使用,簡(jiǎn)單粗暴,需要的朋友可以參考下2016-03-03Oracle數(shù)據(jù)庫(kù)ORA 54013錯(cuò)誤的解決辦法
ORA 54013 不允許對(duì)虛擬列執(zhí)行INSERT 操作,這是Oracle 11 的新特性。接下來(lái)通過(guò)本文給大家介紹oracle數(shù)據(jù)庫(kù)ORA 54013錯(cuò)誤的解決辦法,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-10-10Oracle數(shù)據(jù)庫(kù)密碼重置、導(dǎo)入導(dǎo)出庫(kù)命令示例應(yīng)用
本節(jié)主要介紹了Oracle數(shù)據(jù)庫(kù)密碼重置、導(dǎo)入導(dǎo)出庫(kù)命令的基本使用,有需要的朋友可以學(xué)習(xí)下2014-07-07Oracle9iPL/SQL編程的經(jīng)驗(yàn)小結(jié)
Oracle9iPL/SQL編程的經(jīng)驗(yàn)小結(jié)...2007-03-03Navicat連接Oracle數(shù)據(jù)庫(kù)報(bào)錯(cuò):Oracle library is not&nb
這篇文章主要介紹了解決Navicat連接Oracle數(shù)據(jù)庫(kù)提示oracle library is not loaded的問(wèn)題,本文通過(guò)圖文結(jié)合的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-06-06Oracle針對(duì)數(shù)據(jù)庫(kù)某一行進(jìn)行操作的時(shí)候,如何將這一行加行鎖
Oracle針對(duì)數(shù)據(jù)庫(kù)某一行進(jìn)行操作的時(shí)候,如何將這一行加行鎖的實(shí)現(xiàn)方法2009-02-02