pipelined函式例項
最近使用者提供一份如下格式資料的EXCEL
地市公司 學校名稱 學生數
AA公司 巴馬一小 0
AA公司 NULL 0
AA公司 NULL 0
AA公司 NULL 0
AA公司 NULL 0
AA公司 NULL 500
BB公司 巴馬二小 0
BB公司 NULL 0
BB公司 NULL 0
BB公司 NULL 0
BB公司 NULL 0
BB公司 NULL 255
. . .
. . .
. . .
最後需要實現的效果如下:
地市公司 學校名稱 學生數
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 500
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 255
. . .
. . .
. . .
EXCEL有上萬筆記錄,手工處理可以實現,但需要花費長時間,
試著使用ORACLE中的pipelined函式實現,pipelined函式需要返回的是集合資料型別
所以事先我們需要建立集合.
建立物件型別
SQL> create or replace type xiaox_type as object
(
area_code varchar2(100)
,school_name varchar2(100)
,sf_number number
);
/
型別已經建立。
建立集合
SQL> create or replace type xiaox_type_test as table of xiaox_type
2 /
型別已建立。
SQL>create or replace function fn_pipeline_test
return xiaox_type_test
pipelined
is
v_xiaox_type xiaox_type:=xiaox_type(null,null,null); -- 初始化集合
v_sch_name varchar2(100);
v_sch_name_tmp varchar2(100):=null;
v_area_code varchar2(100);
v_sf number;
cursor fetch_data is select
area_code
,school_name
,sf_number
from hw_hxl.tp_hxl_xiaox_200812_cp_tmp
;
begin
open fetch_data;
fetch fetch_data into v_area_code,v_sch_name,v_sf;
while fetch_data%found loop
if v_sch_name is not null then
v_sch_name_tmp:= v_sch_name;
begin
v_xiaox_type.area_code:= v_area_code;
v_xiaox_type.school_name := v_sch_name;
v_xiaox_type.sf_number := v_sf;
end;
else
v_xiaox_type.area_code:= v_area_code;
v_xiaox_type.school_name := v_sch_name_tmp;
v_xiaox_type.sf_number := v_sf;
end if;
pipe row(v_xiaox_type);
fetch fetch_data into v_area_code,v_sch_name,v_sf;
end loop;
commit;
close fetch_data;
end
;
/
函式已建立.
呼叫fn_pipeline_test函式
select * from table(fn_pipeline_test);
得到如下輸出效果:
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 500
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 255
. . .
. . .
. . .
注:針對以上使用者提供的資料還可以使用AWK處理:
將使用者提供過來的EXCEL檔案另存為null.txt,
處理後的資料儲存為null_deal.txt
awk -F't' 'BEGIN{OLD_SCHOOL="";}
{
if(length($2)>0) {
OLD_SCHOOL=$2;
}
printf"%st%st%sn", $1, OLD_SCHOOL, $3;
}' null.txt>null_deal.txt
test$head -12 null_deal.txt
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 0
AA公司 巴馬一小 500
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 0
BB公司 巴馬二小 255
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/77311/viewspace-1019329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- vfork函式例項函式
- plsql 除錯 pipelined 函式SQL除錯函式
- PHP函式處理函式例項詳解PHP函式
- 遞迴函式例項大全遞迴函式
- hasOwnProperty()函式程式碼例項函式
- 管道函式及表函式的測試PIPELINED__PIPE ROW函式
- $.ajax()函式用法簡單例項函式單例
- C#例項建構函式C#函式
- 【函式】oracle translate() 詳解+例項函式Oracle
- js函式作為函式的引數程式碼例項JS函式
- shell裡邊子函式與主函式的例項(轉)函式
- jQuery css()函式使用程式碼例項jQueryCSS函式
- js冪函式程式碼例項分享JS函式
- APUE 8-1 fork函式例項函式
- Excel isna函式的用法和例項Excel函式
- ASP 中 Split 函式的例項 (轉)函式
- Oracle 的管道化表函式(Pipelined Table) 轉Oracle函式
- 函式計算支援 MySQL 例項繫結函式MySql
- 私有建構函式的物件建立例項函式物件
- 例項物件和函式物件的區別物件函式
- Linux 中的 fork() 函式例項解析Linux函式
- js confirm()函式用法程式碼例項JS函式
- jquery的filter()函式用法程式碼例項jQueryFilter函式
- javascript函式節流程式碼例項分享JavaScript函式
- 原生ajax()函式封裝程式碼例項函式封裝
- PHP類和物件函式例項詳解PHP物件函式
- python教程 python日期函式例項Python函式
- Python函式每日一講 - frozenset集合函式入門及例項Python函式
- PHP preg match正規表示式函式的操作例項PHP函式
- 理清原型物件、 例項物件、建構函式原型物件函式
- python例項建立銷燬的函式整理Python函式
- Hive 分析函式lead、lag例項應用Hive函式
- 例項詳解 Linux 中的 fork() 函式Linux函式
- JS函式,物件,例項方法,物件方法理解JS函式物件
- Python簡單函式迴圈綜合例項Python函式
- PHP常見陣列函式與例項[基礎]]PHP陣列函式
- Python 入門之經典函式例項(二)Python函式
- javascript以函式方式提交表單程式碼例項JavaScript函式