konhon

          忘掉過去,展望未來。找回自我,超越自我。
          逃避不一定躲的過, 面對不一定最難過, 孤單不一定不快樂, 得到不一定能長久, 失去不一定不再擁有, 可能因為某個理由而傷心難過, 但我卻能找個理由讓自己快樂.

          Google

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks
          1.CREATE OR REPLACE PACKAGE ROME AS  
            AS
            TYPE RefCursor IS REF CURSOR;
            Function GetCompany(key IN char) return RefCursor;
            END;
            /
            CREATE OR REPLACE PACKAGE BODY ROME IS
            IS
            Function GetCompany(key IN char) return RefCursor
            Is
            v_temp RefCursor;
            BEGIN
            OPEN v_temp FOR
            SELECT * FROM Company WHERE com_ID =key;
            return v_temp;
            END GetCompany;
            END;
            
            2.(適用于PLSQL類型)
            
            Type shifts_ty is RECORD(
            comp_code  varchar2(10),
            SHIFT_CODE  varchar2(10),
            sft_flg    varchar2(10),
            beg_tm    number,
            end_tm    number,
            skills    varchar2(10)) ;
            Type shifts is Table of shifts_ty index by binary_integer;
            
            FUNCTION test_proc(test varchar2)
            
            return shifts is
            shiftspkg SHIFTS;  --表變量shiftspkg
            
            cursor q1 is select
            shifts.comp_code,shifts.shift_code,shifts.WRK_BEG_TM,shifts.WRK_end_TM,
            shifts.skills from str_shifts shifts where comp_code ='TSI'; --str_shifts是與表變量shiftspkg結(jié)構(gòu)完全相同的真實表
            qty q1%rowtype;
            begin
            
            open q1;
            loop
            fetch q1 into qty;
            exit when q1%notfound;
            
            for iCount in 1.. qty.skills.count
            loop
            shiftspkg(icount).comp_code:= qty.comp_code;
            shiftspkg(icount).SHIFT_CODE:= qty.shift_code;
            shiftspkg(icount).sft_flg:= 'SLOTS';
            shiftspkg(icount).beg_tm:= qty.wrk_beg_tm;
            shiftspkg(icount).end_tm:= qty.wrk_end_tm;
            shiftspkg(icount).skills:= qty.skills(icount);
            end loop;
            end loop;
            return  shiftspkg;
            end;
            end;
            
            3.使用于SQL類型
            
            create or replace type myScalarType as object
            ( comp_code varchar2(10),
            shift_code varchar2(10),
            sft_flg    varchar2(10),
            beg_tm    number,
            end_tm    number,
            skills    varchar2(10)
            )
            
            create or replace type myArrayType as table of myScalarType
            
            FUNCTION test_proc(test varchar2) return myArrayType
            is
            l_data myArrayType := myArrayType() ;
            begin
            for i in 1 .. 5
            loop
            l_data.extend;
            l_data( l_data.count ) := myScalarType( 'cc-'||i,
            'sc-'||i,
            'flg-'||i,
            i,
            i,
            test||i );
            end loop;
            
            return l_data;
            end;
            
            end;
            
            select *
            from THE ( select cast( pkg_test.test_proc('hello') as myArrayType )
            from dual ) a
            或
            select *
            from table ( cast( my_function() as mytabletype  ) )
            order by seq
          posted on 2005-11-28 21:09 konhon 優(yōu)華 閱讀(451) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 鸡西市| 教育| 桐柏县| 察雅县| 吕梁市| 谷城县| 嘉黎县| 都匀市| 车致| 临夏县| 泽普县| 广汉市| 乳山市| 遂昌县| 西盟| 德庆县| 绥芬河市| 忻州市| 共和县| 苏尼特右旗| 霞浦县| 井研县| 秀山| 泰宁县| 定日县| 山丹县| 天津市| 石台县| 清丰县| 德钦县| 西宁市| 兴隆县| 启东市| 沂源县| 县级市| 昭平县| 新龙县| 襄城县| 房山区| 宝鸡市| 高青县|