一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Oracle - Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率

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

2020-01-10 20:41回憶′亂人心 Oracle

BULK COLLECT(成批聚合類型)和數(shù)組集合type類型is table of 表%rowtype index by binary_integer用法筆記。對(duì)oracle批量查詢 刪除 更新使用bulk collect提高效果的相關(guān)知識(shí)感興趣的朋友通過本文一起學(xué)習(xí)吧

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

例1: 批量查詢項(xiàng)目資金賬戶號(hào)為 "320001054663"的房屋賬戶信息并把它們打印出來 .

?
1
2
3
4
5
6
7
8
9
10
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ù)組類型, 簡(jiǎn)單的來說就是一個(gè)可以存儲(chǔ)一列多行的數(shù)據(jù)類型 , my_acct指出在哪個(gè)表上( 存在的表 ) %ROWTYPE 指在表上的行的數(shù)據(jù)類型.

4. INDEX BY BINARY_INTEGER  指索引組織類型

5. v_acct_table 定義一個(gè)變量來存儲(chǔ)集合數(shù)據(jù)類型

6. BULK COLLECT INTO  指是一個(gè)成批聚合類型, 簡(jiǎn)單的來說 , 它可以存儲(chǔ)一個(gè)多行多列存儲(chǔ)類型 ,into 后面指定從哪里來 ,

7. v_acct_table.COUNT 用來 v_acct_table 里面的數(shù)量

8. (i)表示下標(biāo)號(hào)

例2: 批量更新項(xiàng)目資金賬戶號(hào)為 "320001054663"的房屋賬戶的余額。

?
1
2
3
4
5
6
7
8
9
10
11
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; 定義變量來存儲(chǔ)它們 .

3. RETURNING 用來指定要返回的部分 ,BULK COLLECT INTO  成批聚合類型

4. 用for  把它們打印出來

總結(jié) :

  • 實(shí)驗(yàn)時(shí)把set serveroutput on  打開
  • 以上的例子的目的主要是為了提高性能. 這里的性能主要指的是速度  .
  • 速度指的是批量插入, 更新 , 刪除  , 為什么會(huì)提高速度呢 ?  提取到的數(shù)據(jù)都在內(nèi)存中進(jìn)行處理, 因?yàn)樵趦?nèi)存處理比較快 , 這是常識(shí) .

以上所述是小編給大家介紹的Oracle批量查詢、刪除、更新使用BULK COLLECT提高效率,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://www.cnblogs.com/beyondzw/archive/2017/04/28/6781656.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久免费看精品国产一区 | 国内精品视频免费观看 | 99久久精品国产片久人 | 九九热视频 这里有精品 | 91视频综合网 | 国产一卡二卡3卡4卡四卡在线 | 好吊操这里有精品 | 国产日韩高清一区二区三区 | 亚洲国产黄色 | 成人中文字幕在线观看 | 国产精品亚洲片在线不卡 | 精品国产福利在线 | 日本高清中文字幕一区二区三区 | 99久久香蕉国产综合影院 | 韩国最新三级网站在线播放 | 97视频免费人人观看人人 | 欧美成人免费观看久久 | 日韩欧美综合在线二区三区 | 麻豆在线观看 | 欧美黑人换爱交换乱理伦片 | 精品久久洲久久久久护士免费 | 亚洲国产五月综合网 | 97就去干| 免费视频精品一区二区三区 | 大ji吧快给我别停受不了视频 | 日韩成a人片在线观看日本 日韩不卡一区二区 | 91午夜视频 | 私人影院免费 | 春意影院午夜爽爽爽免费 | 日韩成人一区ftp在线播放 | 免费看www| 免费欧美一级 | 嫩草影院永久在线播放 | 国产香蕉一区二区精品视频 | 无限资源在线观看8 | 农夫69小说小雨与农村老太 | 精品无人乱码一区二区三区 | 5g影院天天5g爽天天看 | 91在线视频国产 | 人性本色 | 日韩高清一区二区 |