안녕하세요.
오라클 사용자 정의함수를 하나 만들어 사용하려는데 계속 Invalid 상태가
되서요.
FUNC_GET_AMT (IN_JIKG_CODE IN VARCHAR2, IN_HOBONG IN VARCHAR2, IN_PD_CODE IN VARCHAR2)
RETURN NUMBER IS
IS_RETURN NUMBER(9);
BEGIN
IS_RETURN := 0;
-- 직급 및 호봉에 따른 기본급을 구한다
IF IN_PD_CODE = 'PAY' THEN
BEGIN
SELECT GRAD_BASE_AMT
INTO IS_RETURN
FROM QX200MS
WHERE JIKG_CODE = IN_JIKG_CODE AND GRAD_CD = IN_HOBONG;
RETURN IS_RETURN;
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
RETURN IS_RETURN;
END;
END;
END IF;
-- 차량유지비 및 교통비를 구한다
IF IN_PD_CODE = 'A17' THEN
BEGIN
SELECT GRAD_CAR
INTO IS_RETUTN
FROM QX200MS
WHERE JIKG_CODE = IN_JIKG_CODE AND GRAD_CD = IN_HOBONG;
RETURN IS_RETURN;
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
RETURN IS_RETURN;
END;
END;
END IF;
-- 시간외 수당을 구한다
IF IN_PD_CODE = 'A10' THEN
BEGIN
SELECT GRAD_OT
INTO IS_RETUTN
FROM QX200MS
WHERE JIKG_CODE = IN_JIKG_CODE AND GRAD_CD = IN_HOBONG;
RETURN IS_RETURN;
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
RETURN IS_RETURN;
END;
END;
END IF;
END;
그리 복잡한 함수는 아닌데, 고생하고 있네요.
도대체 어디서 틀렸는지 모르겠네요.
그럼, 즐코하시길.
CREATE OR REPLACE PROCEDURE FUNC_GET_AMT (IN_JIKG_CODE IN VARCHAR2, IN_HOBONG IN VARCHAR2, IN_PD_CODE IN VARCHAR2, IS_RETURN OUT NUMBER) IS
BEGIN
IF IN_PD_CODE = 'PAY' THEN
SELECT GRAD_BASE_AMT
INTO IS_RETURN
FROM QX200MS
WHERE JIKG_CODE = IN_JIKG_CODE AND GRAD_CD = IN_HOBONG;
ELSIF IN_PD_CODE = 'A17' THEN
SELECT GRAD_CAR
INTO IS_RETURN
FROM QX200MS
WHERE JIKG_CODE = IN_JIKG_CODE AND GRAD_CD = IN_HOBONG;
ELSIF IN_PD_CODE = 'A10' THEN
SELECT GRAD_OT
INTO IS_RETURN
FROM QX200MS
WHERE JIKG_CODE = IN_JIKG_CODE AND GRAD_CD = IN_HOBONG;
ELSE IS_RETURN := 0;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
IS_RETURN :=0;
END FUNC_GET_AMT;