Я получил эту ошибку при использовании нескольких зацикленных ИЛИ: однострочный подзапрос возвращает более одной строки,
Ошибка возникает только через почтальона (возможно, связанного с спящим режимом), запрос работает в oracle sql develoer
Мой запрос :
WITH SPRM_TABLE AS (
SELECT
DISTINCT P.SPRM_KEY,
P.SPRM_PARENT_KEY AS PARENTS,
P.CPRM_KEY,
P.SPRM_PARENT_KEY
FROM
S4C_SUB_PERIMETER P
INNER JOIN S4C_CRITERIA CRI ON CRI.SPRM_KEY = P.SPRM_KEY
WHERE
(
(
CRI.CRI_TYPE = 'OFFER'
AND CRI.CRI_VALUE = 'BUSINESS_ETHERNET'
)
)
or (
(
P.SPRM_PARENT_KEY IS NULL
OR (
CRI.CRI_TYPE IN (
'SATIN_ACCOUNT', 'SATIN_SUBACCOUNT',
'IDENT_RCE', 'ICO1'
)
AND (
SELECT
CHP.CRI_KEY_PARENT
FROM
S4C_CRITERIA_HERITANCE CHP
WHERE
CHP.CRI_KEY_CHILD = CRI.CRI_KEY
) IN (
SELECT
CBB.CRI_KEY
FROM
S4C_CRITERIA CBB
WHERE
CBB.SPRM_KEY = P.SPRM_PARENT_KEY
)
)
)
AND (
(
CRI.CRI_TYPE = 'IDENT'
AND CRI.CRI_VALUE = '00010525'
)
)
)
)
SELECT
DISTINCT CPRM.CPRM_KEY AS PRM_ID,
'CLIENT' AS PRM_TYPE
FROM
CPRM_TABLE CPRM
UNION ALL
SELECT
DISTINCT PRM.SPRM_KEY AS PRM_ID,
'SUB' AS PRM_TYPE
FROM
SPRM_TABLE PRM START WITH PRM.SPRM_PARENT_KEY IS NULL
AND PRM.CPRM_KEY IN (
SELECT
CLI_PRM.CPRM_KEY
FROM
CPRM_TABLE CLI_PRM
) CONNECT BY PRIOR PRM.SPRM_KEY = PRM.SPRM_PARENT_KEY
Если кто-то может помочь, пожалуйста? и если бы кто-нибудь мог объяснить, почему это работает в Oracle sql develper, но не в коде Java с спящим режимом?
это не имеет ничего общего с почтальоном.
Пожалуйста, укажите ошибку! Мы не сможем помочь, если вы не покажете нам, что происходит, когда вы запускаете свой код.
Вы не можете сделать это:
AND (
SELECT
CHP.CRI_KEY_PARENT
FROM
S4C_CRITERIA_HERITANCE CHP
WHERE
CHP.CRI_KEY_CHILD = CRI.CRI_KEY
) IN (
SELECT
CBB.CRI_KEY
FROM
S4C_CRITERIA CBB
WHERE
CBB.SPRM_KEY = P.SPRM_PARENT_KEY
)
В левой части оператора IN ожидается скаляр, а вы предоставляете подзапрос, который, по-видимому, возвращает несколько строк.
Вам нужно будет объединить эти два запроса в один:
AND EXISTS (
SELECT *
FROM S4C_CRITERIA_HERITANCE CHP ,
S4C_CRITERIA CBB
WHERE CHP.CRI_KEY_CHILD = CRI.CRI_KEY
AND CBB.CRI_KEY = CHP.CRI_KEY_PARENT
AND CBB.SPRM_KEY = P.SPRM_PARENT_KEY
)
Вы должны предоставить код для воспроизведения ошибки. Пожалуйста, прочитайте stackoverflow.com/help/how-to-ask