oracle 管道流函式

2021-08-27 12:27:48 字數 1206 閱讀 5285

管道流函式

1 先定義 物件類中 比如

create or replace type 

obj_cjgzl is object(

mjvarchar2(20),--民警

sspcsvarchar2(12),--派出所

sqdmvarchar2(20),--社群**

fwslnumber(10), --房屋數

czrksnumber(10),--常住人口數

zzrksnumber(10),--暫住人口數

zdrksnumber(10),--重點人口數

jgdxsnumber(10)--監管物件數

)2 建立 乙個該型別的 表型別

create or replace typetab_cjgzl 

is table 

ofobj_cjgzl

3.建立乙個包 裡面定義乙個函式

create or replace package pkg_tj is

functionf_cjgzl(v_sspcs in varchar2,sqjws in varchar2,tjsjq invarchar2,tjsjz in varchar2,tjlb in varchar2,mj invarchar2) 

return tab_cjgzl pipelined;

end pkg_tj;

4.定義包體

create or replace package body pkg_tj is

functionf_cjgzl(v_sspcs in varchar2,sqjws in varchar2,tjsjq invarchar2,tjsjzin 

varchar2,tjlb in varchar2,mj in varchar2)

return tab_cjgzl pipelined is

v_tjjg obj_cjgzl;

begin

v_tjjg:=obj_cjgzl('','','',v_fws,v_czrks,v_zzrks,v_zdrks,v_jgdxs);

pipe row(v_tjjg);

return;

end f_cjgzl;

end pkg_tj;

5.執行

select * fromtable(cast(f_cjgzl('410100000000','','','','1','') astab_cjgzl))

Oracle管道函式示例

oracle的管道函式需要定義下面的三樣 record object type 定義乙個record或object型別的變數,這個變數用於表示返回結果集的一行資料,有點像c 中的datarow類。table type 定義乙個集合型別,這個型別由record object type填充。這個型別也可...

ORACLE管道化表函式

在pl sql中,如果要返回資料的多個行,必須通過返回乙個ref cursor的游標,或者乙個資料集合 如臨時表或物理表 來完成,而ref cursor的侷限於可以從查詢中選擇的資料,而資料集合的侷限性在於必須先create table 無論是建立臨時表還是物理表 來進行具體化,具體化後,會因為頻繁...

Oracle 管道化表函式

在pl sql中,如果要返回資料的多個行,必須通過返回乙個ref cursor的游標,或者乙個資料集合 如臨時表或物理表 來完成,而ref cursor的侷限於可以從查詢中選擇的資料,而資料集合的侷限性在於必須先create table 無論是建立臨時表還是物理表 來進行具體化,具體化後,會因為頻繁...