簡體   English   中英

PL SQL多單行返回問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM