ORA-01427单行子查询返回多个行

问题描述 投票:0回答:1

运行它后,我得到下面的查询,成功超过了它,没有错误,但是当我在一个过程中运行它时,我得到了单个错误。

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条。

oracle oracle10g
1个回答
0
投票

逐一注释或取消注释“(从SELECT as ColumnAlias作为查询)查询列,您可以找到哪个子查询列返回多行]

© www.soinside.com 2019 - 2024. All rights reserved.