Re: Syntax Question
Date: Sat, 9 Feb 2008 18:56:29 -0500
Message-ID: <s6rrj.8408$Rg1.5963@nlpi068.nbdc.sbc.com>
"Vladimir M. Zakharychev" <vladimir.zakharychev_at_gmail.com> wrote in message
news:9e618f1c-1faf-4e17-9645-43b4d385bbdd_at_q21g2000hsa.googlegroups.com...
> On Feb 9, 9:12 pm, "Dereck L. Dietz" <diet..._at_ameritech.net> wrote:
>> Oracle 10.2.0.3.0
>> Windows Server 2003
>>
>> Sorry for this question but our database is currently unavailable so I
>> can't
>> try it myself.
>>
>> Is the following syntax valid for loading a nested table in bulk from a
>> table function?
>>
>> SELECT *
>> BULK COLLECT INTO nt_claims_rec
>> FROM TABLE(get_claims() );
>>
>> Thanks.
>
> Yes, but why? If nt_claims_rec is of the same nested table type as
> get_claims() returns (and most probably this is so,) simple assignment
> will do:
>
> nt_claims_rec := get_claims();
>
> Regards,
> Vladimir M. Zakharychev
> N-Networks, makers of Dynamic PSP(tm)
> http://www.dynamicpsp.com
Does this look workable?
- TYPE definitions
CREATE TYPE t_hmp_claim AS OBJECT
(
clm_id VARCHAR2(14), clm_line_nbr NUMBER(4), clm_src CHAR(1), clm_type VARCHAR2(5), clmdtl_key VARCHAR2(50), cpt_hcpcs VARCHAR2(11), cpt_mod1 VARCHAR2(2), cpt_mod2 VARCHAR2(2), cpt_mod3 VARCHAR2(2), cpt_mod4 VARCHAR2(2), diag_i_1 VARCHAR2(10), diag_i_2 VARCHAR2(10), diag_i_3 VARCHAR2(10), diag_i_4 VARCHAR2(10), diag_i_5 VARCHAR2(10), diag_i_6 VARCHAR2(10), diag_i_7 VARCHAR2(10), diag_i_8 VARCHAR2(10), diag_i_9 VARCHAR2(10), diag_i_10 VARCHAR2(10), drg_submit VARCHAR2(4), dtl_diag VARCHAR2(10), hcfa_pos VARCHAR2(2), birth_date DATE, member_key VARCHAR2(50), gender CHAR(1), member_system_key VARCHAR2(50), person_id NUMBER(10), proc_i_1 VARCHAR2(7), proc_i_2 VARCHAR2(7), proc_i_3 VARCHAR2(7), rev_cd VARCHAR2(4), srv_cd VARCHAR2(2), srv_date_from DATE, srv_prv_id VARCHAR2(12), srv_prv_nbr VARCHAR2(16), sys_clmhdr_id NUMBER, sys_date DATE, valid_member CHAR(1));
CREATE OR REPLACE TYPE t_hmp_claim_tab AS TABLE OF t_hmp_claim;
- procedure code section (partial code)
LOOP nt_claims_rec := get_hmp_claims( v_max_claims, 0, C_SYS_DATE );
EXIT WHEN nt_claims_rec.COUNT = 0;
v_read_cnt := v_read_cnt + nt_claims_rec.COUNT;
load_pass_one; load_pass_two; load_pass_three;
nt_claims_rec := t_source_tab();
END LOOP;
- table function
FUNCTION get_hmp_claims( p_max_claims IN DATE, p_person_id IN PLS_INTEGER, p_sys_date IN DATE )RETURN t_hmp_claim_tab
PIPELINED
IS
nt_load_rec t_hmp_claim := t_hmp_claim();
BEGIN OPEN cr_claims( p_max_claims, p_person_id, p_sys_date );
LOOP FETCH cr_claims
BULK COLLECT INTO nt_load_rec LIMIT 100000;
EXIT WHEN nt_load_rec.COUNT = 0;
PIPE ROW( nt_load_rec );
nt_load_rec := t_hmp_claim();
END LOOP; CLOSE cr_claims;
RETURN; END get_hmp_claims; Received on Sat Feb 09 2008 - 17:56:29 CST