可以按照最後的寫。
工作中常需要經過一段複雜邏輯處理後,得出的乙個結果集。並能夠將這個結果集作為乙個表看待,去進行關聯查詢
我一般採用建立函式function的方式來處理。
--建立包,宣告function和type像查詢乙個表一樣來操作function,使用 table(自定義函式)create
orreplace
package pak_tem
astype date_record
isrecord --自定義型別-行(含字段及型別)
(name
varchar2 (20),
value
varchar2 (20)
);type date_table
istable
ofdate_record; --自定義table類
function
get_term_years
return
date_table --返回table型別
pipelined; --流水式
endpak_tem;
/--實現包體中的function
create
orreplace
package body pak_tem
asfunction
get_term_years
return
date_table
pipelined
isl_result date_record;
begin
for rec in (select
distinct to_char (status_time, '
yyyy')
from
tem_tb
where to_char (status_time, '
yyyy
') !=
'0001')
loop
l_result.name :
= rec.year||'
年'; l_result.value :
= rec.year
;
pipe
row (l_result); --依次返回行
endloop;
end;end
pak_tem;
/
selectps:以下是定義oracle的table型別示例:*from
table(pak_tem.get_term_years());
--自己寫的例子:oracle內建型別
type string_table is
table
ofvarchar(2000);
--自定義型別(date_record)
type date_record is record --
自定義型別-行(含字段及型別)
(name
varchar2 (20),
value
varchar2 (20)
);type date_table
istable
of date_record; --
自定義table類(date_table)
按照以上例子寫的,package:
create or replace package datastest
as type date_record is record
( empno number,
ename varchar2 (64)
); type data_table is table of date_record;
-- author : ccdsew
-- created : 2017/8/15 9:56:28
-- purpose :
-- public function and procedure declarations
function getdates(p_empno number) return data_table pipelined;
end datastest;
package body:
create or replace package body datastest
as/* type date_record is record
( empno number,
ename varchar2 (64)
);*/
/* type data_table is table of date_record;*/
-- function and procedure implementations
function getdates(p_empno number) return data_table pipelined is
l_result date_record;
begin
for data in (select e.empno,e.ename from emp e where e.empno = p_empno) loop
l_result.empno := data.empno;
l_result.ename := data.ename;
pipe row(l_result);
end loop;
end getdates;
end datastest;
測試:
select datastest.getdates(7369) from dual;
也可以這樣寫(比較適合oracle):
package:
create or replace package datatest001 is
-- author : ccdsew
-- created : 2017/8/15 13:26:38
-- purpose : test
-- public type declarations
type date_record is record
( empno number,
ename varchar2 (64)
); type data_table is table of date_record;
-- public function and procedure declarations
function getdates(p_empno number) return data_table pipelined;
end datatest001;
package body:
create or replace package body datatest001 is
function getdates(p_empno number) return data_table pipelined is
l_result date_record;
begin
for data in (select e.empno,e.ename from emp e where e.empno = p_empno) loop
l_result.empno := data.empno;
l_result.ename := data.ename;
pipe row(l_result);
end loop;
end getdates;
end datatest001;
測試和之前一樣。 ECMAScript中函式function型別
說起來ecmascript中上面最有意思,我想那莫過於函式了,有意思的根源,則在於函式實際上是物件。每個函式都是function型別的例項,而且都與其他引用型別一樣具有屬性和方法。由於函式是物件,因此函式名實際上也是乙個指向函式物件的指標,不會與某個函式繫結。函式通常是使用函式宣告語法定義的,如下例...
JCo3 呼叫簡單SAP函式(Function)
本文闡述如何使用jco呼叫簡單sap函式。1.建立一sap使用者 test01 關於如何建立使用者,請參考我上一部落格 jco3 建立連線到sap 1 直接連線 2.編寫 3.編譯 4.執行 執行結果 本例呼叫sap function stfc connection 然後使用得到importpara...
js作用域小記var變數和function區別
首先來乙個例子做實驗 function created return dir function myctrl var yourctrl function var d created d.ctrl d.ctrl2 可以猜一下輸出結果 輸出 d.ctrl 輸出 my ctrld.ctrl2 輸出 unc...