婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle 中 table 函數的應用淺析

Oracle 中 table 函數的應用淺析

熱門標簽:區域地圖標注怎么設置 上海網絡外呼系統 電話機器人那種好 外呼系統好點子 理財產品電銷機器人 百度地圖標注飯店位置怎么 南通電銷外呼系統哪家強 地圖標注的坐標點 百度地圖標注注解

表函數可接受查詢語句或游標作為輸入參數,并可輸出多行數據。該函數可以平行執行,并可持續輸出數據流,被稱作管道式輸出。應用表函數可將數據轉換分階段處理,并省去中間結果的存儲和緩沖表。

1. 用游標傳遞數據

利用游標 REF CURSOR 可將數據集(多行記錄)傳遞到PL/SQL函數:

SELECT *
 FROM TABLE (myfunction (CURSOR (SELECT *
         FROM mytab)));  

2. 利用兩個實體化視圖(或表)作為樣板數據

CREATE MATERIALIZED VIEW sum_sales_country_mv
BUILD IMMEDIATE
REFRESH COMPLETE
ENABLE QUERY REWRITE
AS
SELECT SUBSTR (s.calendar_month_desc, 1, 4) YEAR, c.country_id country,
   SUM (sum_amount_sold) sum_amount_sold
 FROM sum_sales_month_mv s, customers c
 WHERE s.cust_id = c.cust_id
  AND c.country_id IN ('US', 'UK', 'FR', 'ES', 'JP', 'AU')
GROUP BY SUBSTR (s.calendar_month_desc, 1, 4), c.country_id
CREATE MATERIALIZED VIEW sum_es_gend_mv
BUILD DEFERRED
REFRESH FAST
ENABLE QUERY REWRITE
AS
SELECT SUBSTR (s.calendar_month_desc, 1, 4) YEAR,
   s.calendar_month_desc cal_month, c.cust_gender,
   SUM (sum_amount_sold) sum_amount_sold
 FROM sum_sales_month_mv s, customer c
 WHERE s.cust_id = c.cust_id
  AND c.country_id = 'ES'
  AND sunstr (s.calendar_month_desc, 1, 4) = '2000'
GROUP BY SUBSTR (s.calendar_month_desc, 1, 4),
   s.calendar_month_desc,
   c.cust_gender;

3. 定義對象類型和基于對象類型的表類型

定義對象類型并且為進一步引用做好準備。

(1)定義對象類型:TYPE sales_country_t

CREATE MATERIALIZED VIEW sum_es_gend_mv
BUILD DEFERRED
REFRESH FAST
ENABLE QUERY REWRITE
AS
SELECT SUBSTR (s.calendar_month_desc, 1, 4) YEAR,
   s.calendar_month_desc cal_month, c.cust_gender,
   SUM (sum_amount_sold) sum_amount_sold
 FROM sum_sales_month_mv s, customer c
 WHERE s.cust_id = c.cust_id
  AND c.country_id = 'ES'
  AND sunstr (s.calendar_month_desc, 1, 4) = '2000'
GROUP BY SUBSTR (s.calendar_month_desc, 1, 4),
   s.calendar_month_desc,
   c.cust_gender;

(2)定義表類型:TYPE SUM_SALES_COUNTRY_T_TAB

CREATE TYPE sum_sales_country_t_tab AS TABLE OF sales_country_t;

(3)定義對象類型:TYPE sales_gender_t

CREATE TYPE sales_gender_t AS OBJECT (
 YEAR    VARCHAR2 (4),
 country_id  CHAR (2),
 cust_gender  CHAR (1),
 sum_amount_sold NUMBER
);

(4)定義表類型:TYPE SUM_SALES_GENDER_T_TAB

CREATE TYPE sum_sales_gender_t_tab AS TABLE OF sales_gender_t;

(5)定義對象類型:TYPE sales_roll_t

CREATE TYPE sales_roll_t AS OBJECT (
 channel_desc  VARCHAR2 (20),
 country_id  CHAR (2),
 sum_amount_sold NUMBER
);

(6)定義表類型:TYPE SUM_SALES_ROLL_T_TAB

CREATE TYPE sum_sales_roll_t_tab AS TABLE OF sales_roll_t;

(7)檢查一下建立的類型

SELECT object_name, object_type, status
 FROM user_objects
 WHERE object_type = 'TYPE';

4. 定義包:Create package and define REF CURSOR

CREATE OR REPLACE PACKAGE cursor_pkg
I TYPE sales_country_t_rec IS RECORD (
  YEAR    VARCHAR (4),
  country   CHAR (2),
  sum_amount_sold NUMBER
 );
 TYPE sales_gender_t_rec IS RECORD (
  YEAR    VARCHAR2 (4),
  country_id  CHAR (2),
  cust_gender  CHAR (1),
  sum_amount_sold NUMBER
 );
 TYPE sales_roll_t_rec IS RECORD (
  channel_desc  VARCHAR2 (20),
  country_id  CHAR (2),
  sum_amount_sold NUMBER
 );
 TYPE sales_country_t_rectab IS TABLE OF sales_country_t_rec;
 TYPE sales_roll_t_rectab IS TABLE OF sales_roll_t_rec;
 TYPE strong_refcur_t IS REF CURSOR
  RETURN sales_country_t_rec;
 TYPE row_refcur_t IS REF CURSOR
  RETURN sum_sales_country_mv%ROWTYPE;
 TYPE roll_refcur_t IS REF CURSOR
  RETURN sales_roll_t_rec;
 TYPE refcur_t IS REF CURSOR;
END corsor_pkg;

5. 定義表函數

(1)定義表函數:FUNCTION Table_Ref_Cur_Week

CREATE OR REPLACE FUNCTION table_ref_cur_week (cur CURSOR.refcur_t)
 RETURN sum_sales_country_t_tab
IS
 YEAR    VARCHAR (4);
 country   CHAR (2);
 sum_amount_sold NUMBER;
 objset   sum_sales_country_t_tab := sum_sales_country_t_tab ();
 i     NUMBER     := 0;
BEGIN
 LOOP
-- Fetch from cursor variable
  FETCH cur
  INTO YEAR, country, sum_amount_sold;
  EXIT WHEN cur%NOTFOUND;
      -- exit when last row is fetched
-- append to collection
  i := i + 1;
  objset.EXTEND;
  objset (i) := sales_country_t (YEAR, country, sum_amount_sold);
 END LOOP;
 CLOSE cur;
 RETURN objset;
END;
/

(2)定義表函數:FUNCTION Table_Ref_Cur_Strong

CREATE OR REPLACE FUNCTION table_ref_cur_strong (cur cursor_pkg.strong_refcur_t)
 RETURN sum_sales_country_t_tab PIPELINED
IS
 YEAR    VARCHAR (4);
 country   CHAR (2);
 sum_amount_sold NUMBER;
 i     NUMBER  := 0;
BEGIN
 LOOP
  FETCH cur
  INTO YEAR, country, sum_amount_sold;
  EXIT WHEN cur%NOTFOUND;     -- exit when last row fetched
  PIPE ROW (sales_country_t (YEAR, country, sum_amount_sold));
 END LOOP;
 CLOSE cur;
 RETURN;
END;
/

(3)定義表函數:FUNCTION Table_Ref_Cur_row

CREATE OR REPLACE FUNCTION table_ref_cur_row (cur cursor_pkg.row_refcur_t)
 RETURN sum_sales_country_t_tab PIPELINED
IS
 in_rec cur%ROWTYPE;
 out_rec sales_country_t := sales_country_t (NULL, NULL, NULL);
BEGIN
 LOOP
  FETCH cur
  INTO in_rec;
  EXIT WHEN cur%NOTFOUND;    -- exit when last row is fetched
  out_rec.YEAR := in_rec.YEAR;
  out_rec.country := in_rec.country;
  out_rec.sum_amount_sold := in_rec.sum_amount_sold;
  PIPE ROW (out_rec);
 END LOOP;
 CLOSE cur;
 RETURN;
END;
/

(4)定義表函數:FUNCTION Gender_Table_Ref_Cur_Week

CREATE OR REPLACE FUNCTION gender_table_ref_cur_week (cur cursor_pkg.refcur_t)
 RETURN sum_sales_gender_t_tab
IS
 YEAR    VARCHAR2 (4);
 country_id  CHAR (2);
 cust_gender  CHAR (1);
 sum_amount_sold NUMBER;
 objset   sum_sales_gender_t_tab := sum_sales_gender_t_tab ();
 i     NUMBER     := 0;
BEGIN
 LOOP
  FETCH cur
  INTO YEAR, country_id, cust_gender, sum_amount_sold;
  EXIT WHEN cur%NOTFOUND;    -- exit when last row is fetched
  i := i + 1;
  objset.EXTEND;
  objset (i) :=
   sum_sales_gender_t (YEAR, country_id, cust_gender, sum_amount_sold);
 END LOOP;
 CLOSE cur;
 RETURN objset;
END;
/

6. 調用表函數

下列 SQL 查詢語句調用已被定義的表函數。

SELECT *
 FROM TABLE (table_ref_cur_week (CURSOR (SELECT *
           FROM sum_sales_country_mv)));
SELECT *
 FROM TABLE (table_ref_cur_strong (CURSOR (SELECT *
            FROM sum_sales_country_mv)));
SELECT *
 FROM TABLE (table_ref_cur_row (CURSOR (SELECT *
           FROM sum_sales_country_mv)));
SELECT *
 FROM TABLE (table_ref_cur_week (CURSOR (SELECT *
           FROM sum_sales_country_mv
           WHERE country = 'AU')));

以上所述是小編給大家介紹的Oracle 中 table 函數的應用淺析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • Oracle Table Demo語句應用介紹
  • oracle中變長數組varray,嵌套表,集合使用方法
  • sql – Oracle中匿名TABLE/VARRAY類型示例詳解

標簽:海東 昭通 百色 寧波 紹興 中衛 自貢 遼源

巨人網絡通訊聲明:本文標題《Oracle 中 table 函數的應用淺析》,本文關鍵詞  Oracle,中,table,函數,的,應用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle 中 table 函數的應用淺析》相關的同類信息!
  • 本頁收集關于Oracle 中 table 函數的應用淺析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲国产一区二区三区 | 麻豆精品视频在线| 欧美日韩在线播| 蜜臀久久99精品久久久画质超高清| 日本高清成人免费播放| 亚洲成人av电影在线| 欧美电视剧免费观看| 成人av在线网| 视频一区二区中文字幕| 国产女主播视频一区二区| 91麻豆免费视频| 精品一区二区三区久久| 亚洲精品一二三| 久久青草国产手机看片福利盒子| 成人激情动漫在线观看| 肉丝袜脚交视频一区二区| 久久综合成人精品亚洲另类欧美 | 欧美经典一区二区| 在线日韩一区二区| 久久99精品久久久久婷婷| 中文字幕中文乱码欧美一区二区| 欧美另类一区二区三区| 成人av在线网| 国产盗摄女厕一区二区三区| 亚洲国产精品尤物yw在线观看| 精品剧情v国产在线观看在线| av在线播放成人| 激情文学综合插| 午夜精品久久久久| 亚洲色图欧洲色图| 久久九九久久九九| 日韩三级.com| 欧美日韩亚洲高清一区二区| a美女胸又www黄视频久久| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲午夜电影在线观看| 亚洲精品日日夜夜| 亚洲精品视频一区二区| 免费看日韩a级影片| 成人黄色a**站在线观看| 亚洲色图在线播放| 日本丶国产丶欧美色综合| 1024精品合集| 色综合久久中文字幕| 亚欧色一区w666天堂| 欧美影视一区二区三区| 激情欧美一区二区| 国产性天天综合网| 成人动漫视频在线| 日韩精品1区2区3区| 日韩午夜精品电影| 菠萝蜜视频在线观看一区| 亚洲欧洲无码一区二区三区| 91色|porny| 日韩成人免费电影| 欧美tickling网站挠脚心| 美女高潮久久久| 亚洲视频一二三区| 欧美片网站yy| 九九九精品视频| 国产精品美女视频| 欧洲国产伦久久久久久久| 久久国产精品72免费观看| 久久久高清一区二区三区| 国内久久精品视频| 亚洲成人第一页| 久久综合九色综合欧美亚洲| 欧美亚洲自拍偷拍| 青青国产91久久久久久| 在线观看日产精品| 国产一区二区中文字幕| 国产精品久久久久久福利一牛影视 | 日韩一区国产二区欧美三区| 91精品国产综合久久久久久久久久| 欧美军同video69gay| 久久综合丝袜日本网| 国产精品视频第一区| 亚洲免费观看高清完整版在线观看| 亚洲一区二区三区三| 精久久久久久久久久久| 白白色 亚洲乱淫| 国产一区二区久久| 色狠狠综合天天综合综合| 91片黄在线观看| 91精品国产一区二区三区蜜臀| 成人午夜视频福利| 欧美美女喷水视频| 欧美变态tickling挠脚心| 国产精品天干天干在观线| 国产香蕉久久精品综合网| 国产精品欧美经典| 亚洲综合小说图片| 91国偷自产一区二区三区观看| 6080午夜不卡| 欧美日韩免费一区二区三区视频| 亚洲综合清纯丝袜自拍| 国产精品美女视频| 夜夜爽夜夜爽精品视频| 亚洲国产一区视频| gogogo免费视频观看亚洲一| 日韩一区二区三区视频在线| 亚洲欧洲www| 黄色日韩三级电影| 国产夫妻精品视频| 欧美日韩一区二区三区四区五区| 精品99999| 天天av天天翘天天综合网色鬼国产| 国产福利一区二区三区视频在线| 在线观看视频一区| 18成人在线观看| 丰满亚洲少妇av| 日韩一卡二卡三卡国产欧美| 欧美xxxxx裸体时装秀| 亚洲妇女屁股眼交7| 美腿丝袜在线亚洲一区| 91高清视频免费看| 国产精品情趣视频| 国产激情一区二区三区| 色视频一区二区| 精品美女在线观看| 一区二区三区日本| 国产高清精品网站| 91精品国产一区二区三区| 国产精品久久久久影院亚瑟| 狠狠色狠狠色综合日日91app| 91片在线免费观看| 国产精品久久久久桃色tv| 国产精品一区在线| 欧美日本视频在线| 亚洲成人在线免费| 欧美久久高跟鞋激| 琪琪久久久久日韩精品| 91麻豆精品91久久久久同性| 三级影片在线观看欧美日韩一区二区| 在线免费不卡视频| 国产精品美女久久久久久久久久久 | 精品伊人久久久久7777人| 91麻豆国产精品久久| 亚洲人成网站色在线观看| 91最新地址在线播放| 国产精品久久久久久久久免费樱桃| 成人美女视频在线观看18| 欧美国产一区二区| 日韩不卡手机在线v区| 日韩三级视频在线看| 国产成人av一区二区| 中文一区二区完整视频在线观看| 国产美女精品一区二区三区| 国产精品美女久久久久久久| 成人激情图片网| 亚洲国产精品影院| 91国在线观看| 另类小说视频一区二区| 日韩午夜激情av| 成人在线综合网站| 久久精品国产亚洲5555| 国产亚洲精品资源在线26u| 国产精品77777| 亚洲精品菠萝久久久久久久| 久久99国产精品尤物| 国产精品少妇自拍| 欧美性三三影院| 精品一区二区三区视频| 亚洲人一二三区| 欧美一区2区视频在线观看| 国产黑丝在线一区二区三区| 中文字幕一区二区三区不卡 | 成人一二三区视频| 亚洲成人免费看| 国产目拍亚洲精品99久久精品| 国内精品久久久久影院一蜜桃| 欧美videofree性高清杂交| 亚洲人123区| 欧美高清视频不卡网| 国产91对白在线观看九色| 亚洲综合视频在线| 国产日本欧美一区二区| 欧美日韩久久久久久| 国产91精品免费| 久久不见久久见中文字幕免费| 久久久久97国产精华液好用吗| 色偷偷一区二区三区| 激情欧美一区二区三区在线观看| 亚洲国产精品t66y| 99精品视频在线观看免费| 丝袜亚洲精品中文字幕一区| 日韩欧美中文字幕公布| 国产一区二区久久| 亚洲一区自拍偷拍| 欧美日韩大陆一区二区| 91免费版在线| 国产成+人+日韩+欧美+亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲美女精品一区| 国产精品理论在线观看| 欧美日韩国产免费一区二区| 色哦色哦哦色天天综合| 一区二区中文视频| 国产精品久久一级| 中文字幕五月欧美|