oracle create function 例項2
上次使用的create function 查詢的結果在pl/sql developer上面顯示的cursor,並不能顯示需要查詢的結果。
今天在網上查詢到另外一種方法很好的替代了上次的方案,
[@more@]
具體步驟如下:
1.CREATE OR REPLACE TYPE "HISSAAS"."EMP_ROW_TYPE" as object
(tenant_id varchar2( 20 ),tenant_name varchar2 ( 50),mc varchar2 (50 ),mzl int,jzl int ,bll int ,sylint,qxs int ,qxl int );
2.CREATE OR REPLACE TYPE "HISSAAS"."EMP_TABLE_TYPE" as table of emp_row_type;
3.
create or replace function getempname_2(v_date1 in varchar2,v_date2 in varchar2 )
return emp_table_type pipelined
is
v emp_row_type;
begin
for thisrow in
( select p.tenant_id,
getdepartname(p.TENANT_ID) tenant_name,getEmpName(p.diagdoct) mc,count (distinct p.mzsn) mzl,
count (distinct p.mzsn) jzl, count( distinct i.mzemrid) bll,
( case
when count ( distinct p.mzsn) <> 0 then
count (distinct i.mzemrid) / count( distinct p.mzsn)
else
0
end ) syl,
count (distinct c.emrid) qxs,
( case
when count (i.mzemrid) <> 0 then
count (distinct c.emrid) / count( distinct i.mzemrid)
else 0
end ) qxl
from SMZ_PATIDIAGREC p, SBL_MZEMR_INDEX i, SBL_QUA_CHK_CORRECT c
where 1 = 1
and p.mzsn = i.mzsn
and c.emrid = i.mzemrid
and p.diagtime >= to_date(v_date1, 'yyyy/mm/dd' )
and p.diagtime <= to_date(v_date2, 'yyyy/mm/dd' )
group by p.tenant_id, getdepartname(p.TENANT_ID), p.DIAGDOCT
order by p.tenant_id, p.tenant_id
) loop
v:=emp_row_type(thisrow.tenant_id,thisrow.tenant_name,thisrow.mc,thisrow.mzl,thisrow.jzl,thisrow.bll,thisrow.syl,thisrow.qxs,thisrow.qxl);
pipe row (v);
end loop ;
return;
end ;
4,在pl/sql中輸入
select * from table(getempname_2(20130101,20130201)) 即可查詢結果。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24237320/viewspace-1060213/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle create function的兩個例項OracleFunction
- PostgreSQL DBA(165) - pgAdmin(Create Function選項)SQLFunction
- 2 Day DBA-管理Oracle例項-Oracle例項和例項管理概覽Oracle
- javascript Function()使用程式碼例項JavaScriptFunction
- MySQL create function時報錯MySqlFunction
- 2 Day DBA-管理Oracle例項-關閉和啟動Oracle例項-使用OEMDC關閉和啟動Oracle例項Oracle
- ASM例項使用CREATE PFILE FROM MEMORY的bugASM
- 2 Day DBA-管理Oracle例項-關於例項記憶體結構Oracle記憶體
- oracle 修改ORACLE例項Oracle
- 管理ORACLE例項Oracle
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-關於例項關閉Oracle
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-關於例項啟動Oracle
- Windows下Oracle 11gR2例項啟動WindowsOracle
- Oracle9.2.0.7 RAC , 例項2的歸檔到了例項1的歸檔目錄 ?Oracle
- 2.Vue例項Vue
- Smarty例項教程(2)
- oracle_datagrard 之Create筆記2Oracle筆記
- Oracle 11gR2 ASM例項記憶體管理OracleASM記憶體
- Oracle 10gR2 下配置簡單ASM例項Oracle 10gASM
- 4.1. Oracle例項Oracle
- Oracle Far Sync例項Oracle
- Oracle例項恢復Oracle
- oracle更改例項名Oracle
- Oracle JOB 建立例項Oracle
- shell指令碼例項(2)指令碼
- Oracle資料庫中Create user的注意事項Oracle資料庫
- 2 Day DBA-管理Oracle例項-關於後臺程式Oracle
- ORACLE 11gR2 單例項資料庫自啟Oracle單例資料庫
- 配置Oracle單例項隨機啟動(11gR2)Oracle單例隨機
- Oracle Data Guard Linux 平臺 Physical Standby 搭建例項 -2OracleLinux
- oracle 11gR2 配置goldengate連線asm例項OracleGoASM
- Oracle例項和Oracle資料庫Oracle資料庫
- 2 Day DBA-管理Oracle例項-關於例項記憶體結構-程式全域性區(PGA)Oracle記憶體
- oracle 例項表查詢Oracle
- 手動建立Oracle例項Oracle
- oracle例項最佳化Oracle
- oracle單例項轉RACOracle單例
- oracle 資料庫例項Oracle資料庫