Как написать эквивалентную хранимую процедуру для приведенного ниже оператора DML.
WITH e AS ( Select* from enrollment Where effective_end_dt IS NULL ), h AS ( Select* from member_status_history Where effective_end_dt IS NULL ) Select Distinct (m.ssn), d.department_cd, m.last_nm, e.plan_id, p.plan_cd, S.enrollmemt_status_desc From member m, e, h, PLAN p, enrollment_status_s, department d Where m.member_id =e.member_id AND m.member_id = h.member_id AND e.plan_id = p.plan_id AND e.enrollment_status_id =s.enrollment_status_id AND s.enrollment_status_id='510' AND m.department_id=d.department_id AND h.member_status='530' AND e.plan_id IN (307,308,309) AND NOT EXISTS ( SELECT t.member_id From transaction_register t Where m.member_id = t.member_id AND t.plan_id = e.plan_id AND t.update_dt >= TO_DATE('01/11/2016 00:00:00', 'mm/DD/yyyy hh24:mi:ss') AND t.update_dt <= TO_DATE('01/12/2016 23:59:59', 'mm/DD/yyyy hh24:mi:ss') AND t.transaction_type_cd='PAYDE' AND t.update_user_id='PAYPGM' ) Order By e.plan_id, ssn
Что я уже пробовал:
Я создал эквивалентную хранимую процедуру, но это кажется неправильным, может ли кто-нибудь помочь мне, что будет эквивалентной хранимой процедурой для вышеуказанного запроса.
CREATE OR REPLACE Procedure SP_GET_UNMATCHED_MEMBER BEGIN WITH e AS ( Select* from enrollment Where effective_end_dt IS NULL ), h AS ( Select* from member_status_history Where effective_end_dt IS NULL ) Select Distinct (m.ssn), d.department_cd, m.last_nm, e.plan_id, p.plan_cd, S.enrollmemt_status_desc From member m, e, h, PLAN p, enrollment_status_s, department d Where m.member_id =e.member_id AND m.member_id = h.member_id AND e.plan_id = p.plan_id AND e.enrollment_status_id =s.enrollment_status_id AND s.enrollment_status_id='510' AND m.department_id=d.department_id AND h.member_status='530' AND e.plan_id IN (307,308,309) AND NOT EXISTS ( SELECT t.member_id From transaction_register t Where m.member_id = t.member_id AND t.plan_id = e.plan_id AND t.update_dt >= TO_DATE('01/11/2016 00:00:00', 'mm/DD/yyyy hh24:mi:ss') AND t.update_dt <= TO_DATE('01/12/2016 23:59:59', 'mm/DD/yyyy hh24:mi:ss') AND t.transaction_type_cd='PAYDE' AND t.update_user_id='PAYPGM' ) Order By e.plan_id, ssn END;
Garth J Lancaster
"Я создал эквивалентную хранимую процедуру, но она кажется неправильной" - почему бы вам не использовать "улучшить вопрос" для обновления с вашей попыткой создать хранимую процедуру и не описать, в чем заключается проблема(ы) с ней - таким образом, мы можем помочь вам исправить ваш собственный код (мы все равно не пишем код для людей, поэтому, если вы не опубликуете свой собственный код, все, что вы, скорее всего, получите обратно, - это список ссылок google на хранимые процедуры)
Richard Deeming
Вы должны использовать правильный INNER JOIN
s в вашем запросе. Кроме этого, в вашей хранимой процедуре нет ничего явно неправильного. Вы должны предоставить подробную информацию об ошибке, которую вы получаете.
Mukesh Pr@sad
Запрос работает нормально, и я получаю необходимые данные, только проблема в том, что я не могу написать этот запрос в виде хранимой процедуры.