<foreach collection="p_Keys" item="item" index="index" open="(" close=")" separator="OR "> <foreach collection="item" item="listItem" index="spIndex" open="(" close=")" separator="AND "> <choose> <when test="!empty(listItem) and spIndex == 0">JI_SEQ = #{listItem}</when> <when test="!empty(listItem) and spIndex == 1">GU_CD = #{listItem}</when> </choose> </foreach> </foreach>
안녕하세요. 현재 오라클로 report 프로그램에 연동하여서 사용하려 합니다.
리포트 툴 내에서 쿼리를 작성해서 데이터를 받아서 맵핑을 시켜서 출력하는 형태입니다.
p_Keys는 파라미터 변수로 리스트안에 string형 배열 형태로 값이 넘어옵니다.
기존 쿼리에서는 foreach형태로 사용하다가 리포팅 툴내에서는 foreach문을 사용할 수없는 상황이라
foreach문을for문 형태나 javascript 형태로 변경을 해야될꺼 같은데
item, index, open, separator등을..어떻게 처리를 해줘야할까요?
오라클을 사용중인데 원본 쿼리에는
SELECT
A.JI_SEQ,
A.GU_CD,
(SELECT
CD_NAME
FROM TB_ORG_INFO
WHERE 1=1
AND PROJECT_YEAR = '2017'
AND ORG_MST_CD = '20') AS BO_NM
FROM TB_GAGU_LIST_MASTER A
WHERE 1=1
AND
<foreach collection="p_gaguKeys" item="item" index="index" open="(" close=")" separator="OR ">
<foreach collection="item" item="listItem" index="spIndex" open="(" close=")" separator="AND ">
<choose>
<when test="!empty(listItem) and spIndex == 0">A.JOSAJI_SEQ = #{listItem}</when>
<when test="!empty(listItem) and spIndex == 1">A.GAGU_CD = #{listItem}</when>
</choose>
</foreach>
</foreach>
형태로 사용중이며 저 foreach문을 돌고나면
AND
(
(
A.JI_SEQ = '2052'
AND A.GU_CD = '0011'
)
OR (
A.JI_SEQ = '2052'
AND A.GU_CD = '0023'
)
)
위의 형태의 데이터가 출력됩니다.
저런 식으로 foreach문을 사용하지않고 and문을 만들고싶습니다.