konhon

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

          Google

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            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結構完全相同的真實表
            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 優華 閱讀(451) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 东丰县| 敦煌市| 安多县| 澄迈县| 大埔区| 芦溪县| 兴仁县| 饶平县| 阳江市| 吴川市| 蕉岭县| 钟山县| 会东县| 柘荣县| 常州市| 元江| 大悟县| 乌拉特前旗| 项城市| 五大连池市| 克东县| 筠连县| 德惠市| 巩义市| 渭南市| 闵行区| 阳江市| 宾川县| 花莲市| 醴陵市| 万盛区| 彭州市| 江北区| 甘洛县| 綦江县| 莒南县| 满洲里市| 孟村| 抚宁县| 芷江| 新化县|