ORA-01427 Подзапрос с одной строкой возвращает более одной строки - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть запрос ниже, когда я его запускаю, он успешно превышен без ошибок, но когда я запускаю его внутри процедуры, я получаю единственную ошибку.

CREATE OR REPLACE PROCEDURE ABLEA_NEW.AB_VATFILE
     IS
      fHandle UTL_FILE.FILE_TYPE;
      err       varchar2(200);
     v_str VARCHAR2(4000);

    CURSOR VAT1 IS
      SELECT (SELECT cif_no
                FROM nbfc_customer_m
               WHERE customerid = a.bpid) ||
               (SELECT EXTRACT_ACCT(HOST_ACCT_INFO, 'SUFFIX')             
                FROM LEA_AGREEMENT_GROUPGL_MAP A, FA_ACCTCATG_M B
               WHERE EXTRACT_ACCT(A.HOST_ACCT_INFO, 'ACCTCATG') = B.ACCTCATG
                 AND B.GROUPID = 'FA'
                 AND A.ACTIVE_FLAG = 'Y'
                 and AGREEMENTID   = a.caseid)
                 "Account No",lpad(a.caseid,6,0) Loan_No
                 ,
             (SELECT AGREEMENTNO
                FROM lea_agreement_dtl
               WHERE AGREEMENTID = a.caseid)
                 AGREEMENTNO
             ,
                 LPAD(A.productid,3,0) Scheme_ID,
             (SELECT rpad(schemedesc,35,' ')
                FROM lea_scheme_m
               WHERE schemeid = a.productid)
                 SchemeDesc,
           to_char(a.advicedate,'ddmmyyyy') advicedate,
           it_conv(a.adviceamt) adviceamt,
           rpad(a.chargeid,6,' ')chargeid,
           (SELECT rpad(chargedesc,35,' ')
              FROM nbfc_charges_m
             WHERE chargeid = a.chargeid)
               "Charge Description",
               IT_CONV(a.chargeamt)chargeamt,
               (SELECT 
                     decode(count(1),0,'N','Y')
                                 FROM  nbfc_pmnt_dtl y
               WHERE     a.txnadviceid = y.txnadviceid
                     AND a.status = 'A'
                     AND y.status IS NULL
                     --and TRUNC(y.pmntdate) between :p_datefrom and :p_dateto
                     AND a.tax_applicable = 'Y'
                     AND a.ptxnadviceid IS NULL)Paid,
                  LPAD(b.chargeid,6,0)
               "VAT ChargeID",
           (SELECT RPAD(chargedesc,35,' ')
              FROM nbfc_charges_m
             WHERE chargeid = b.chargeid)
               "VAT Charge Description",
           IT_CONV(b.chargeamt)
               "VAT Amount"
      FROM (SELECT *
              FROM nbfc_txn_advice_dtl
             WHERE status = 'A' AND tax_applicable = 'Y' AND ptxnadviceid IS NULL)
           a,
           (SELECT *
              FROM nbfc_txn_advice_dtl
             WHERE status = 'A' AND ptxnadviceid IS NOT NULL) b
     WHERE a.txnadviceid = b.ptxnadviceid;

     BEGIN
      fHandle := UTL_FILE.FOPEN('UAEDB', 'VAT', 'W');
       FOR I IN VAT1
         LOOP
         v_str:= null;
                v_str:= I."Account No"||I.Loan_No||I.AGREEMENTNO || I.Scheme_ID ||I.SchemeDesc|| I.advicedate|| I.adviceamt|| I.chargeid||I."Charge Description"||I.chargeamt||I.Paid||
                I."VAT ChargeID" ||I."VAT Charge Description"||I."VAT Amount";                                  
                  UTL_FILE.PUTF(fHandle,v_str);
                   UTL_FILE.PUTF(fHandle, '\n');
         END LOOP;
         UTL_FILE.FCLOSE(fHandle);
     END ;
    /

Как я могу решить эту проблему?Примечание: запрос возвращает более 10000 записей.

1 Ответ

0 голосов
/ 29 сентября 2019

комментируйте или отменяйте комментирование столбца запроса «(выберите из) как ColumnAlias» один за другим, вы можете найти, какой столбец подзапроса возвращает более одной строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...