iBatis 동적 SQL 질문
- 작성자 :
- 정*용
- 작성일 :
- 2016-02-04 17:36:48
- 조회수 :
- 922
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
넥사크로와 표준프레임워크를 연동해서 프로젝트 개발중입니다.
그런데 화면의 데이터셋이 동적으로 변동이 됨에 따라 iBatis의 쿼리도 동적으로
만들어 보려고 합니다.
컬럼 대신에 동적으로 파라미터를 전달할 수 있다고 알고 있는데,
아래 처럼 컬럼 여러개를 하나의 String으로 파라미터를 전달하면 오류가 발생합니다.
아래와 같이 파라미터의 select 구문을 미리 만들어서 전달하려고 하는데 이런 방식은 사용할수가 없는건가요?
1.XML 소스
<select id="selectWS3100_01List" parameterClass="java.util.HashMap" resultClass="java.util.HashMap" remapResults="true">
SELECT .... 생략 .....
#selectstr2#
FROM T_ADMIN A, T_TMP1B, T_TMP2 C
WHERE A.RNO = B.RNO
..... 이하 생략
2.파라미터 :
selectstr2 = ",MAX(DECODE(X.RESYR,'2012',CO_EF,0)) AS C2012_CO_EF,MAX(DECODE(X.RESYR,'2012',CO_CTR,0)) AS C2012_CO_CTR,MAX(DECODE(X.RESYR,'2012',CO_CALC,0)) AS C2012_CO_CALC .............[반복]"
3.오류 :
ORA-00923: FROM 키워드가 필요한 위치에 없습니다.
그런데 화면의 데이터셋이 동적으로 변동이 됨에 따라 iBatis의 쿼리도 동적으로
만들어 보려고 합니다.
컬럼 대신에 동적으로 파라미터를 전달할 수 있다고 알고 있는데,
아래 처럼 컬럼 여러개를 하나의 String으로 파라미터를 전달하면 오류가 발생합니다.
아래와 같이 파라미터의 select 구문을 미리 만들어서 전달하려고 하는데 이런 방식은 사용할수가 없는건가요?
1.XML 소스
<select id="selectWS3100_01List" parameterClass="java.util.HashMap" resultClass="java.util.HashMap" remapResults="true">
SELECT .... 생략 .....
#selectstr2#
FROM T_ADMIN A, T_TMP1B, T_TMP2 C
WHERE A.RNO = B.RNO
..... 이하 생략
2.파라미터 :
selectstr2 = ",MAX(DECODE(X.RESYR,'2012',CO_EF,0)) AS C2012_CO_EF,MAX(DECODE(X.RESYR,'2012',CO_CTR,0)) AS C2012_CO_CTR,MAX(DECODE(X.RESYR,'2012',CO_CALC,0)) AS C2012_CO_CALC .............[반복]"
3.오류 :
ORA-00923: FROM 키워드가 필요한 위치에 없습니다.
A
정운용님, 안녕하세요.
컬럼명을 동적으로 사용하고자 하시는것으로 파악됩니다.
파라미터의 양옆을 #이 아닌 $로 감싸서 테스트 해보시기 바랍니다.
$는 값을 상수로 취급하여 양 옆에 '' 를 붙이지 않습니다.
감사합니다.
컬럼명을 동적으로 사용하고자 하시는것으로 파악됩니다.
파라미터의 양옆을 #이 아닌 $로 감싸서 테스트 해보시기 바랍니다.
$는 값을 상수로 취급하여 양 옆에 '' 를 붙이지 않습니다.
감사합니다.