다중 역할 계정의 좌측메뉴 조회 SQL 오류 수정 (SFR-001 후속)

권한 신청·승인 워크플로(N:신설=추가부여)로 사용자가 AUTHOR_CODE를 2개 이상
갖게 되면, 레거시 eGov 표준 메뉴 쿼리(selectMainMenuHead/Left/LastMenuNo(Cnt))의
"= (서브쿼리)"가 다중 행을 반환해 Subquery returns more than 1 row로 500 오류가
발생했다(2FA/OTP 등록 직후 /mnt/main.do 진입 시 재현). 서브쿼리를 IN으로,
상위 SELECT에 DISTINCT를 추가해 다중 역할을 지원하도록 수정.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
infraurp 2026-07-28 11:14:30 +09:00
parent 462e55bcd5
commit 1288fc6396
2 changed files with 35 additions and 35 deletions

View File

@ -9,7 +9,7 @@
<select id="menuManageDAO.selectMainMenuHead" parameterClass="MenuManageVO" resultClass="egovMap">
<![CDATA[
SELECT
SELECT DISTINCT
B.MENU_NO AS menuNo
, B.MENU_ORDR AS menuOrdr
, B.MENU_NM AS menuNm
@ -23,7 +23,7 @@
WHERE B.Menu_NO > 0
AND B.UPPER_MENU_NO = #menuNo#
AND A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT C.AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS C
AND A.AUTHOR_CODE IN (SELECT C.AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS C
WHERE C.SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
ORDER BY MENU_ORDR
]]>
@ -32,7 +32,7 @@
<select id="menuManageDAO.selectMainMenuLeft" parameterClass="MenuManageVO" resultClass="egovMap">
/* menuManageDAO.selectMainMenuLeft */
<![CDATA[
SELECT
SELECT DISTINCT
B.MENU_NO AS menuNo
, B.MENU_ORDR AS menuOrdr
, B.MENU_NM AS menuNm
@ -42,7 +42,7 @@
, (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS chkURL
FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B
WHERE A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
ORDER BY B.MENU_ORDR
]]>
@ -67,7 +67,7 @@
(select MIN(MENU_ORDR)
from COMTNMENUCREATDTLS A, COMTNMENUINFO B
where A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#)
AND B.UPPER_MENU_NO = #menuNo#)
]]>
@ -82,7 +82,7 @@
(select MIN(MENU_ORDR)
from COMTNMENUCREATDTLS A, COMTNMENUINFO B
where A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#)
AND B.UPPER_MENU_NO = #menuNo#)
]]>

View File

@ -9,7 +9,7 @@
<select id="menuManageDAO.selectMainMenuHead" parameterClass="MenuManageVO" resultClass="egovMap">
<![CDATA[
SELECT
SELECT DISTINCT
B.MENU_NO AS "menuNo"
, B.MENU_ORDR AS "menuOrdr"
, B.MENU_NM AS "menuNm"
@ -23,7 +23,7 @@
WHERE B.Menu_NO > 0
AND B.UPPER_MENU_NO = #menuNo#
AND A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT C.AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS C
AND A.AUTHOR_CODE IN (SELECT C.AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS C
WHERE C.SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
ORDER BY MENU_ORDR
]]>
@ -31,7 +31,7 @@
<select id="menuManageDAO.selectMainMenuLeft" parameterClass="MenuManageVO" resultClass="egovMap">
<![CDATA[
SELECT
SELECT DISTINCT
B.MENU_NO AS "menuNo"
, B.MENU_ORDR AS "menuOrdr"
, B.MENU_NM AS "menuNm"
@ -41,7 +41,7 @@
, (SELECT C.URL FROM COMTNPROGRMLIST C WHERE B.PROGRM_FILE_NM = C.PROGRM_FILE_NM) AS "chkURL"
FROM COMTNMENUCREATDTLS A, COMTNMENUINFO B
WHERE A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tmpUniqId#)
ORDER BY B.MENU_ORDR
]]>
@ -66,7 +66,7 @@
(select MIN(MENU_ORDR)
from COMTNMENUCREATDTLS A, COMTNMENUINFO B
where A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#)
AND B.UPPER_MENU_NO = #menuNo#)
]]>
@ -81,7 +81,7 @@
(select MIN(MENU_ORDR)
from COMTNMENUCREATDTLS A, COMTNMENUINFO B
where A.MENU_NO = B.MENU_NO
AND A.AUTHOR_CODE = (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
AND A.AUTHOR_CODE IN (SELECT AUTHOR_CODE from COMTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID = #tempValue#)
AND B.UPPER_MENU_NO = #menuNo#)
]]>