2014-10-21 3 views
0

안녕하세요, 도와 주셔서 감사합니다.PL/SQL 도움말 삽입 문을 저장 프로 시저로 변환

저장 프로 시저로 변환해야하는 insert 문이 있습니다. 나는 아직도 프로 시저를 저장하는 초보자이고 이것에 대한 도움은 크게 감사하겠습니다.

감사합니다, Willz06jw

Insert Into PRES.PRES1 
select distinct pe.pat_id as PATID, pat.pat_mrn_id as PATMRNID, pe.pcp_prov_id as PCPPROVID, pe.department_id as DEPARTMENTID, pe.contact_date as CONTACTDATE, trunc((TO_DATE ('30-09-2013 23:59:59', 'DD-MM-YYYY HH24:MI:SS') - pat.birth_date)/365.25) AS AGE,'' as AGEGROUP, ce.financial_class as FINCLASS 
from pat_enc pe 
inner join patient pat on pe.pat_id = pat.pat_id 
inner join clarity_dep b on b.department_id = pe.department_id 
left join clarity_ser cs on pe.visit_prov_id = cs.prov_id 
left join zc_def_division zc on cs.def_division_c = zc.def_division_c 
inner join hsp_account ha on pe.hsp_account_id = ha.hsp_account_id 
inner join clarity_epm ce on ha.primary_payor_id = ce.payor_id 
where 
pe.enc_type_c = '101' --2014.09.03 remove virtual visits.. include office visits 101 only in ('101','1002') 
and (pe.appt_status_c = 2 OR pe.appt_status_c is null) 
and (pat.pat_status_c =1 or nvl(pat.pat_status_c,99999) = 99999) 
-- and pe.contact_date between ADD_MONTHS(ENDDATE,-12*1.5) and ENDDATE -- contact date in last 18 months 
and pe.contact_date between TO_DATE('1-OCT-2012','DD-MON-YY') and TO_DATE('30-SEP-2013','DD-MON-YY') -- contact date in last 18 months 
---and trunc((TO_DATE ('30-09-2013 23:59:59', 'DD-MM-YYYY HH24:MI:SS') - pat.birth_date)/365.25) BETWEEN 3 AND 11 
and (zc.def_division_c in (26,91,266,329,330,331,332,333,389,402) 
or pe.visit_prov_id = pe.pcp_prov_id) 
and ce.financial_class in ('1','3') 
and b.DEPARTMENT_ID in (200101,200102,200104,200201,200202,200204,200220,200301,200302,200304,200319,200401,200402,200404,200501,200601,200602,200701,200702,200704,200801,200802,200804,200911,200912,200913,200914,200916,200917,200921,200923,200924,200925,200926,200927,200928,201002,201201,201202,202101,202102,202104,202108,202301,202302,202308,234005,230407,290109) 
; 
COMMIT; 

답변

0

그것은 종류의 하드 삽입 문의 일부 (있는 경우) 파라미터 할 생각되는 알고 있습니다. 여기에 간단한 요구 사항을 위해 수정할 수있는 저장 프로 시저의 구조를 보여주는 간단한 예제가 있습니다.

create or replace procedure pres_insert (
    p_contact_date_start  date, 
    p_contact_date_end  date 
) as 
    --declare local variables here if needed. 

begin 

    insert into <your_table> 
    (select distinct * 
    from <from_table> pe 
    where pe.contact_date between p_contact_date_start and p_contact_date_end); 

    commit; 

end; 

관찰해야 할 주요 사항은 프로 시저에 매개 변수를 전달하고 삽입 문의 요구 사항에 따라 사용할 수 있다는 것입니다.

사용 방법에 따라 '커밋'을 포함하지 않을 수도 있습니다. 즉,이 절차는 전체 '거래'를 구성하는 많은 것 중 하나 일뿐입니다.

절차 내에서 예외를 처리하는 방법을 고려하고 조사 할 수도 있습니다.

+0

감사합니다. 이것은 시작을 위해 잘 돌아갔다. –

관련 문제