UPDATE A
SET
A.CD_BSACTIV = {@P_CD_ATTR},
A.ID_UPDATE = {@P_ID_UPDATE},
A.DTS_UPDATE = {@P_DTS_UPDATE}
FROM FI_CFWS_MST A
INNER JOIN MA_COA_MST B
ON B.CD_COMPANY = A.CD_COMPANY
AND BCD_GAAP = A.CD_GAAP
AND B.CD_ACCT = A.CD_ACCT
INNER JOIN MA_ACGRP_DTL C
ON C.CD_COMPANY = A.CD_COMPANY
AND CCD_GAAP = A.CD_GAAP
AND C.CD_FSFORM = A.CD_FSFORM
AND C.CD_ACCT = A.CD_ACCT
INNER JOIN MA_ACGRP_MST D
ON D.CD_COMPANY = A.CD_COMPANY
AND D.CD_GAAP = A.CD_GAAP
AND D.CD_FSFORM = A.CD_FSFORM
AND D.CD_ACGRP = C.CD_ACGRP
INNER JOIN MA_ACGRP_MST E
ON E.CD_COMPANY = A.CD_COMPANY
AND E.CD_GAAP = A.CD_GAAP
AND E.CD_FSFORM = A.CD_FSFORM
AND E.CD_ACGRP = D.CD_1LEVEL
WHERE A.CD_COMPANY = {@P_CD_COMPANY}
AND A.CD_GAAP = {@P_CD_GAAP}
AND A.YM_ACPE = {@P_YM_ACPE}
AND A.CD_FSFORM = 'D0012'
AND A.CD_ACCT IN ({@P_ADDED_ACCT})
AND E.CD_GRP IN ('100', '200', '300')
AND B.NM_ACCT LIKE '%' + {@P_NM_KEY} + '%'
이렇게 짜진 쿼리인데 오라클에서 안돌아가서요ㅠㅠ
ANSI로 오라클 MSSQL 등등 다 돌아가게 짜야하는데 어떻게 수정해야될까요ㅠㅠㅠㅠㅠㅠ
-- 오라클 Update 절에는 From 절이 없습니다. -- Exist 나 In 등의 서브쿼리를 이용해 체크하셔야 합니다. UPDATE fi_cfws_mst a SET a.cd_bsactiv = :p_cd_attr , a.id_update = :p_id_update , a.dts_update = :p_dts_update WHERE a.cd_company = :p_cd_company AND a.cd_gaap = :p_cd_gaap AND a.ym_acpe = :p_ym_acpe AND a.cd_fsform = 'D0012' AND a.cd_acct IN (:p_added_acct) AND EXISTS (SELECT 1 FROM ma_coa_mst b INNER JOIN ma_acgrp_dtl c ON c.cd_company = a.cd_company AND c.cd_gaap = a.cd_gaap AND c.cd_fsform = a.cd_fsform AND c.cd_acct = a.cd_acct INNER JOIN ma_acgrp_mst d ON d.cd_company = a.cd_company AND d.cd_gaap = a.cd_gaap AND d.cd_fsform = a.cd_fsform AND d.cd_acgrp = c.cd_acgrp INNER JOIN ma_acgrp_mst e ON e.cd_company = a.cd_company AND e.cd_gaap = a.cd_gaap AND e.cd_fsform = a.cd_fsform AND e.cd_acgrp = d.cd_1level WHERE b.cd_company = a.cd_company AND b.cd_gaap = a.cd_gaap AND b.cd_acct = a.cd_acct AND b.nm_acct LIKE '%' || :p_nm_key || '%' AND e.cd_grp IN ('100', '200', '300') ) ;