2012-11-16 51 views
0

它不工作,我只有錯誤ORA-00913:「太多的值。」。錯誤的查詢嵌套選擇錯誤ORA-00913

問題我認爲是嵌套選擇。我想用這個選擇來查看。

此代碼顯示所有員工的報告。我改變屬性的名稱爲這個職位:

SELECT sk."AAAA", sk."BBBB", sk."CCCC", sk."DDD", 
      sk."EEEE", sk."FFFF", sk."GGGGG", 
      sk."HHHHH", 
      (SELECT f.VALUE 
      FROM fnd_user_property_tab f 
      WHERE f.identity = sk.login 
      AND NAME = 'IIIII') iii,sk."JJJJ", 

      (SELECT f.VALUE 
      FROM fnd_user_property_tab f 
      WHERE f.identity = sk.login 
      AND NAME = 'SMTP_MAIL_ADDRESS') mail, 

      (SELECT f.VALUE 
      FROM fnd_user_property_tab f 
      WHERE f.identity = sk.login 
      AND NAME = 'KKKK') kkkk, 

      (SELECT fnd.ORACLE_ROLE 
      FROM fnd_user_role_tab fnd 
      WHERE fnd.identity = sk.login 
      AND fnd.ORACLE_ROLE LIKE 'STH-%') profil, 

      (SELECT dr.ROLE, sox_co_w_roli(dr.role) skład 
       FROM sys.dba_roles dr 
       WHERE dr.role = (SELECT fnd.ORACLE_ROLE 
           FROM fnd_user_role_tab fnd 
           WHERE fnd.identity = sk.login 
           AND fnd.ORACLE_ROLE LIKE 'STH-%') 
      ) profile_role 
    FROM sox_konta sk 
    WHERE("PROFIL_DB" LIKE '%ppppp%' 
      OR "PROFIL_DB" = 'oooooooo' 
      OR "PROFIL_DB" = 'rrrrrrrr' 
     ) 
    AND "COMPANIES" IN ('ZZ; ', 'YY; ') 
+0

:請檢查'iii,mail,kkkk,profil,profile_role'過濾條件是否只返回一行。 –

回答

2

嘗試重寫你選擇以這種方式

SELECT sk."AAAA", sk."BBBB", sk."CCCC", sk."DDD", 
      sk."EEEE", sk."FFFF", sk."GGGGG", 
      sk."HHHHH", 
      f_iii.value iii, sk."JJJ", 
      f_mail.value mail, 
      f_kkk.value kkk, 
      fnd.oracle_role profil, 
      dr.ROLE, sox_co_w_roli(dr.role) skład 
    FROM sox_konta sk, 
     fnd_user_property_tab f_iii, 
     fnd_user_property_tab f_mail, 
     fnd_user_property_tab f_kkk, 
     fnd_user_role_tab fnd, 
     sys.dba_roles dr 
    WHERE("PROFIL_DB" LIKE '%ppppp%' 
      OR "PROFIL_DB" = 'oooooooo' 
      OR "PROFIL_DB" = 'rrrrrrrr' 
     ) 
     AND "COMPANIES" IN ('ZZ; ', 'YY; ') 
     AND f_iii.identity = sk.login 
     AND f_iii.NAME = 'IIIII' 
     AND f_mail.identity = sk.login 
     AND f_mail.NAME = 'SMTP_MAIL_ADDRESS' 
     AND f_kkk.identity = sk.login 
     AND f_kkk.NAME = 'KKKK' 
     AND fnd.identity = sk.login 
     AND fnd.ORACLE_ROLE LIKE 'STH-%' 
     AND dr.role = fnd.ORACLE_ROLE; 

我認爲這將有助於。

+0

其同樣的問題ORA-00913:值太多 – Przemek

+0

對不起,我錯了,我認爲,子選擇符是在FROM子句之後。看到我的新編輯。 –

+0

好我重寫我的代碼,但我總是得到相同的錯誤ORA-00913:太多行 – Przemek

1

從這件作品開始。你是否得到錯誤?是?您需要更改提供iii的值的子查詢,以便它只返回一行。

如果該段沒有返回錯誤,則添加下一段,直到找出造成錯誤的原因。

SELECT sk."AAAA", sk."BBBB", sk."CCCC", sk."DDD", 
     sk."EEEE", sk."FFFF", sk."GGGGG", 
     sk."HHHHH", 
     (SELECT f.VALUE 
     FROM fnd_user_property_tab f 
     WHERE f.identity = sk.login 
     AND NAME = 'IIIII') iii 
FROM sox_konta sk 
WHERE("PROFIL_DB" LIKE '%ppppp%' 
     OR "PROFIL_DB" = 'oooooooo' 
     OR "PROFIL_DB" = 'rrrrrrrr' 
    ) 
AND "COMPANIES" IN ('ZZ; ', 'YY; ') 
+0

這個代碼的確定,我得到的結果沒有錯誤。還有,我必須改變什麼? – Przemek

+0

因此,現在添加下一部分。提供郵件列的部分。再次檢查,然後添加提供kkk列的部分。繼續,直到找到導致錯誤的部分。 –