0
2番目の引数で指定されたクエリは、最初の引数がnullの場合にNVLが代替テキストを表示する場合にのみ実行するのが理想です。しかし、以下の問合せでは、最初の引数がNULLでなく、NVLの2番目の引数問合せで使用されたlist_aggのために、文字列連結オーバーフロー・エラーが発生したときに、NVLは問合せを実行しています。最初の引数がNULLでない場合、OracleはNVLの2番目の引数のクエリを実行しています
SELECT NVL (tb1.related_account,
(SELECT DISTINCT LISTAGG (A.ac_no, ';') WITHIN GROUP (ORDER BY A.ac_no)
FROM ACVW_ALL_AC_ENTRIES A
WHERE tb1.trn_ref_no IS NOT NULL AND A.trn_ref_no = tb1.trn_ref_no AND A.trn_code = tb1.trn_code AND A.event = tb1.event AND A.ac_no <> TB1.AC_NO AND A.ac_branch = :param_branch)) FROM ACVW_ALL_AC_ENTRIES tb1
INNER JOIN sttb_account tb2 ON tb1.ac_no = tb2.AC_GL_NO
INNER JOIN gltm_glmaster tb3 ON tb1.AC_NO = tb3.gl_code
INNER JOIN ACTB_ACCBAL_HISTORY tb6 ON tb6.Account = TB1.AC_NO AND TB6.BKG_DATE = TB1.TRN_DT AND TB1.AC_BRANCH = TB6.BRANCH_CODE
LEFT OUTER JOIN DETB_RTL_TELLER tb4 ON tb1.TRN_REF_NO = tb4.TRN_REF_NO
-- AND TB1.TRN_DT=TB4.TRN_DT
INNER JOIN STTM_BRANCH tb5 ON tb1.AC_BRANCH = tb5.BRANCH_CODE
INNER JOIN sttm_trn_code ON sttm_trn_code.trn_code = tb1.TRN_CODE
LEFT OUTER JOIN swtb_txn_log ON SWTB_TXN_LOG.TRN_REF_NO = TB1.TRN_REF_NO WHERE CUST_GL = 'G' AND TB1.TRN_DT = :Dated AND AC_BRANCH IN (:param_branch) AND tb1.related_account IS NOT NULL
NVLの最初の引数がnullの場合、NVLの2番目の引数で指定されたクエリの実行を避けるにはどうすればよいですか。