嗨,谢谢你的帮助,
我有一个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 :(得分: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;
要注意的主要事情是您可以将参数传递给过程并在插入语句中根据需要使用它们。
根据使用方式的不同,您可能不希望包含“提交”。即,如果这个程序只是构成整个交易的许多程序中的一个,那就是
您可能还想考虑并研究如何处理程序中的任何异常。