[英]PL SQL more than single row returned issue
我正在执行以下查询,并且得到“ ORA-01427:单行子查询返回多个行”。 错误返回到位于主SELECT中的DECODE中。 我不能将USER_PRF_NOTIFICATION_T表放在FROM部分中,因为USER_PRF_NOTIFICATION_T可能不包含任何值。 如果不是,则USER_PRF_NOTIFICATION_T.ENTITY_ID中并不全部存在SEC_USER_PRIV.ENTITY_ID中的值 。
SELECT DISTINCT
SEC_USER.USR_ID AS USR_ID,
SEC_USER.USR_FIRST_NAME AS USR_FIRST_NAME,
SEC_USER.USR_LAST_NAME AS USR_LAST_NAME,
SEC_USER_PRIV.ROLE_ID AS SYSTEM_ROLE_ID,
DECODE (
(
SELECT
SYSTMTYP_CODE
FROM
USER_PRF_NOTIFICATION_T
WHERE
USER_PRF_NOTIFICATION_T.USR_ID = SEC_USER.USR_ID
AND USER_PRF_NOTIFICATION_T.ENTITY_ID IN
(
SELECT
SERVER_T.SRV_ID
FROM
SERVER_T
WHERE
UPPER(SERVER_T.SRV_NAME) LIKE UPPER('%gen%') )
AND USER_PRF_NOTIFICATION_T.ENTITY_TYP_CODE = 21), 1, 'SYSTEM', 2, 'TEST', NULL ,
'ALL') AS ENTITY_SYSTM_TYP_NOTIFICATION
FROM
SEC_USER_PRIV,
SEC_USER
WHERE
SEC_USER.USR_ID = SEC_USER_PRIV.USR_ID
AND ((
SEC_USER_PRIV.ENTITY_TYP_CODE = 21
AND SEC_USER_PRIV.ENTITY_ID IN (
(
SELECT
SERVER_T.SRV_ID
FROM
SERVER_T
WHERE
UPPER(SERVER_T.SRV_NAME) LIKE UPPER('%gen%') ))))
怎么解决呢? 直接引用实体ID显然可以解决该问题。 我尝试使用包含所有ID的tableof并尝试:
USER_PRF_NOTIFICATION_T.ENTITY_ID IN(tableof),但出现相同的错误。 如何解决呢? 我需要在FROM部分中选择的ID和DECODE中使用的ID之间建立关联。
提前致谢。
我认为您在键/值对列表中添加了“ NULL”,这导致了错误。
`1, 'SYSTEM', 2, 'TEST', NULL , 'ALL'`
在此处删除NULL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.