myBatis pivot foreach 안에 $ 사용불가능할까요? 0 2 4,685

by 최망고 [DB 기타] Oracle PIVOT MyBatis [2023.06.16 14:45:35]


안녕하세요!
도움요청하고자 글 올립니다!
List로 받은 데이터를 동적으로 적용하고 싶습니다. 아래는 MyBatis로 작성한 부분입니다.

SELECT COL1
	,COL2
	,COL3
    ,<foreach collection="ARR" item="item" separator=",">
		"${item.code}_DATA"
    </foreach>
FROM (
	SELECT COL1
		,COL2
		,COL3
		,CODE
		,NUM
	FROM TABLE 
	) 
PIVOT(
		SUM(NUM) _DATA FOR CODE IN
		(
		<foreach collection="ARR" item="item" separator=",">
		#{item.code} AS "${item.code}"
		</foreach>
		)
	)	

 

위 코드를 읽으면 아래처럼 콜솔에 찍히긴 합니다

SELECT COL1
	,COL2
	,COL3
    ,"1_DATA"
    ,"2_DATA"
    ,"3_DATA"
FROM (
	SELECT COL1
		,COL2
		,COL3
		,CODE
		,NUM
	FROM TABLE 
	) 
PIVOT(
		SUM(NUM) _DATA FOR CODE IN
		(
		    ,'1' AS "1"
		    ,'2' AS "2"
		    ,'3' AS "3"
		)
	)		
	

그런데 서버 콘솔에서는 "ORA-56900: 바인드 변수는 피벗|피벗 해제 작업 내에서 지원되지 않습니다." 오류가 발생합니다... 

 

${}를 사용 하지 못할까요?

 

 

 

 

by 마농 [2023.06.19 11:22:15]

$ 가 아니라 # 때문인 듯 합니다.
- 수정전 : #{item.code}
- 수정후 : '${item.code}'


by 최망고 [2023.06.19 14:56:28]

와 바로 해결 했습니다!!  감사합니다!!

PIVOT관련 별칭도 마농님 과거 답변 보고 써먹어보고있었는데 항상 큰 도움 됩니다! 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입