SELECT 사원번호,
CURSOR ( SELECT AVG(급여총액) * DECODE(a.직무, 'A1', 0.12, 0.11),
MIN(급여총액), MAX(급여총액)
FROM 급여 b
WHERE b.사원번호 = a.사원번호
AND b.년월 BETWEEN '199801' AND '199803' )
FROM 사원 a
WHERE 부서코드 = '1110' ;
대용량데이터베이스솔루션 2권 3-56 에 나온 쿼리입니다.
STORED FUNCTION이 단 하나의 값만 리턴하는 단점을 가지고 있다고 설명하면서... 이것을 해소할 수 있는 방법으로 소개된 것인데요
대충 글만 읽었을때는 급여총액, MIN(급여총액), MAX(급여총액)을 전부다 한번에 가져올수 있는 것인갑다 싶어서 진짜 최고의 방법이다... 라고 생각을 했는데...
오라클9.0에서 막상 돌려보니...
사원번호 CURSOR(SELECTAVG(급여총액)*DECODE(a.직무,'A1',0.12,0.11),MIN(급여총액),MAX(급여총액)...
------------- ---------------------------------------------------------
4 oracle.jdbc.driver.OracleResultSetImpl@8b96e1
5 oracle.jdbc.driver.OracleResultSetImpl@5e9f7e
6 oracle.jdbc.driver.OracleResultSetImpl@3947f5
7 oracle.jdbc.driver.OracleResultSetImpl@a35419
1 oracle.jdbc.driver.OracleResultSetImpl@e669f3
2 oracle.jdbc.driver.OracleResultSetImpl@1360860
이런 모양으로 나오는군요....
당췌 어떤 식으로 활용하라는 건지를 모르겠더라고요
제가 지금 궁금한 내용을 정리하면...
1. 저 내용과 관련된 내용을 검색해보고 싶은데요... 관련 키워드를 뭐로 검색해야 이런 내용이 나올지가 궁급힙니다.
2. 저 쿼리에서 제가 필요로 하는 급여총액, MIN(급여총액), MAX(급여총액)을 어떻게 뽑아 올수 있을 지 궁급합니다.
3. 책에 "사이베이스에서는 'CURSOR'라는 명령어를 사용하지 않아도 된다"... 라고 쓰여 있는데... 막상 돌려보니
잘못된 문장이라고 에러를 밷어내는군요... 제가 지금 사용하는게 사이베이스라서...(Adaptive Server Enterprise/12.5.4)
사이베이스에서는 어떻게 사용해야 하는지 알고 싶습니다.
오라클에 올려야 할지 사이베이스에 올려야 할지... 질문이 겹쳐버려서.. 양쪽에 모두 올려봅니다.... 죄송합니다.....
|