CREATE OR REPLACE function DINSOWN.sf_f0702002(v_dt in char, v_emp in char)
return varchar2
is
v_cur_dt char(8);
CURSOR CR IS
SELECT EMP_NO
FROM aaaa
WHERE NVL(RETI_DATE,'99999999') >= v_cur_dt
AND ENT_CO_DATE < v_cur_dt
AND EMP_NO LIKE v_emp||'%'
AND ( SUBSTR(ENT_CO_DATE, 5, 4) = SUBSTR(v_cur_dt, 5, 4)
SR CR%ROWTYPE;
BEGIN
v_cur_dt = :v_dt <-------------------- 여기서 넣어주는거 같은데요....
loop
fetch cr into sr
end loop
시작을 이렇게 하는 프로시져가 있습니다..
제가 궁금한것은요 in으로 v_dt,v_emp를 받자나요? 그런데 is 에서 변수선언하면서 cursor cr의 쿼리문을 돌리는데요
쿼리문에서 v_emp는 그대로 써있는데 v_dt가 아닌 v_cur_dt로 저렇게 되면 데이터가 나오나요???
아님 loop에서 페치할때 데이터를 불러오는건가요?
CREATE OR REPLACE function DINSOWN.sf_f0702002(v_dt in char, v_emp in char)
return varchar2
is
CURSOR CR (p_cur_dt CHAR ,p_emp CHAR)
IS
SELECT EMP_NO
FROM aaaa
WHERE NVL(RETI_DATE,'99999999') >= p_cur_dt
AND ENT_CO_DATE < p_cur_dt
AND EMP_NO LIKE p_emp || '%'
AND ( SUBSTR(ENT_CO_DATE, 5, 4) = SUBSTR(p_cur_dt, 5, 4)
;
SR CR%ROWTYPE;
BEGIN
OPEN CR (v_dt,v_emp);
loop
fetch cr into sr;
EXIT WHEN cr%NOTFOUND;
end loop;
END