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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
안녕하세요!
도움요청하고자 글 올립니다!
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>
        )
    )  

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입