简体   繁体   中英

ORA-01427 - CONNECT BY PRIOR

I have a query:

SELECT     eo.mch_code, eo.mch_name, eo.serial_no, eo.category_id,
       eo.sup_mch_code, eo.GROUP_ID, eo.cost_center,
       (SELECT     e1.sup_mch_code
              FROM equipment_object e1
             WHERE e1.sup_mch_code LIKE 'OBIEKT-S/%'
        CONNECT BY PRIOR e1.sup_mch_code = e1.mch_code
        START WITH e1.mch_code = eo.mch_code) obiekt_s_kod,
       (SELECT e2.mch_name
          FROM equipment_all_object e2
         WHERE e2.mch_code =
                  (SELECT     e1.sup_mch_code
                         FROM equipment_object e1
                        WHERE e1.sup_mch_code LIKE
                                              'OBIEKT-S/%'
                   CONNECT BY PRIOR e1.sup_mch_code =
                                               e1.mch_code
                   START WITH e1.mch_code = eo.mch_code)) obiekt_s_nazwa
  FROM equipment_object eo
 WHERE eo.contract LIKE NVL (UPPER ('&umiejscowienie'), '%')
   AND eo.mch_code LIKE NVL (UPPER ('&obiekt_podrzedny'), '%')
   AND NVL (eo.cost_center, ' ') LIKE NVL (UPPER ('&MPK'), '%')
CONNECT BY PRIOR eo.mch_code = eo.sup_mch_code
START WITH eo.sup_mch_code LIKE UPPER ('&obiekt_nadrzedny')

but when I compile this query I got error:

ORA-01427: single-row subquery returns more than one row

where is a mistake ?? I read a lot of topics but I dont search my problem

Ok I resolve this problem :) !

I must insert condition : rownum =1

example like this:

    SELECT     eo.mch_code, eo.mch_name, eo.serial_no, eo.category_id,
       eo.sup_mch_code, eo.GROUP_ID, eo.cost_center,
       (SELECT     e1.sup_mch_code
              FROM equipment_object e1
             WHERE e1.sup_mch_code LIKE 'OBIEKT-S/%'
             and rownum=1
        CONNECT BY PRIOR e1.sup_mch_code = e1.mch_code
        START WITH e1.mch_code = eo.mch_code) obiekt_s_kod,
       (SELECT e2.mch_name
          FROM equipment_all_object e2
         WHERE e2.mch_code =
                  (SELECT     e1.sup_mch_code
                         FROM equipment_object e1
                        WHERE e1.sup_mch_code LIKE
                                              'OBIEKT-S/%'
                                              and rownum=1
                   CONNECT BY PRIOR e1.sup_mch_code =
                                               e1.mch_code
                   START WITH e1.mch_code = eo.mch_code)) obiekt_s_nazwa
  FROM equipment_object eo
 WHERE eo.contract LIKE NVL (UPPER ('&umiejscowienie'), '%')
   AND eo.mch_code LIKE NVL (UPPER ('&obiekt_podrzedny'), '%')
   AND NVL (eo.cost_center, ' ') LIKE NVL (UPPER ('&MPK'), '%')
CONNECT BY PRIOR eo.mch_code = eo.sup_mch_code START WITH eo.sup_mch_code LIKE UPPER ('&obiekt_nadrzedny')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM