Function에서 date값 사용시 ORA-24333 에러 발생문제 0 1 10,149

by 파이팅마모루 [SQL Query] ORA-24333 [2013.01.02 21:09:35]


오랫만에 찾아와서 질문글 남기네요 ㅠㅠ

Function 작성중에 문제점이 발생하여 고수님들의 도움을 받고자 합니다.


AND 조건의 sm_timestamp 조건을 빼면 정상적으로 동작하는데,

sm_timestamp 조건 두개를 추가해 두면 ORA-24333 이러가 발생하네요..


도대체 뭐가 문제인지 알지를 못하겠네요... 고수님들의 도움이 필요합니다 ㅠㅠ

이러저리 해보는데 안되네요 ㅠㅠ



CREATE OR REPLACE FUNCTION GET_COUNT_USER 
(v_sm_domainname IN VARCHAR2, v_start_date IN VARCHAR2, v_end_date IN VARCHAR2) 
 
-- 리턴되는 변수의 데이터타입을 꼭 정의해야 합니다 
RETURN NUMBER 
 
IS 
     
-- %type 변수가 사용(스칼라 데이터 타입 참고) 
v_count  NUMBER; 
 
BEGIN 
 
-- 시스템별로 총 사용자수를 구한다 
SELECT user_count 
INTO v_count
FROM 
    SELECT COUNT(0) AS user_count
    FROM
    (
        SELECT sm_username
        FROM NSSO.SMACCESSLOG4
        WHERE sm_eventid IN ('1','11')
        AND sm_domainname NOT IN ('R12_sso_domain','R12_dti_realm')
        AND sm_timestamp >= TO_DATE(v_start_date,'yyyy-MM-dd HH24:MI')-1/24*9
        AND sm_timestamp <= TO_DATE(v_end_date,'yyyy-MM-dd HH24:MI')-1/24*9
        AND sm_domainname = v_sm_domainname
        GROUP BY sm_username
    )
);
 
-- 리턴문이 꼭 존재해야 합니다 
RETURN v_count; 
 
END;
/


by 마농 [2013.01.02 23:41:53]
글쎄요?
일반적인 에러는 아닌듯 합니다.
구문에는 문제 없어 보이구요. 다만, 쿼리가 복잡하네요.
구문이 불필요한 서브쿼리를 남발하고 있으니 서브쿼리를 모두 없애보세요.
SELECT COUNT(DISTINCT sm_username)
  INTO v_count
  FROM nsso.smaccesslog4
 WHERE sm_eventid IN ('1','11')
   AND sm_domainname NOT IN ('R12_sso_domain','R12_dti_realm')
   AND sm_timestamp >= TO_DATE(v_start_date, 'yyyy-MM-dd HH24:MI') - 9/24
   AND sm_timestamp <= TO_DATE(v_end_date, 'yyyy-MM-dd HH24:MI') - 9/24
   AND sm_domainname = v_sm_domainname
;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입