2014-10-21 82 views
0

你好,感謝您的幫助,PL/SQL幫助轉換的INSERT語句到存儲過程中

我有我需要轉換成一個存儲過程的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

謝謝!這一開始運作良好 – 2014-10-22 00:51:35