Доступ к Pivot-запросу с помощью курсора для цикла - PullRequest
0 голосов
/ 05 марта 2019
DECLARE    
     CURSOR curresult IS 
         SELECT *
         FROM (
              SELECT pa.attribute_bill_name,
                     cpad.attribute_value
              FROM custproductattrdetails cpad,
                   productattribute pa
              WHERE cpad.product_id = pa.product_id 
              AND cpad.customer_ref = p_customerref
              AND cpad.product_seq = p_productseq 
              AND cpad.start_dat <= p_terminationdate
              AND (
                   cpad.end_dat IS NULL 
                   OR cpad.end_dat >= p_terminationdate
              ) 
              AND cpad.product_attribute_subid = pa.product_attribute_subid 
              AND pa.attribute_bill_name IN (
                   'BILLED_INSTALLMENT_NUMBER',
                   'TOTAL_INSTALLMENT_NUMBER'
              )
         )
              PIVOT ( MAX ( attribute_value )
                   FOR attribute_bill_name
                   IN ( 'BILLED_INSTALLMENT_NUMBER' AS billed_installment_number,'TOTAL_INSTALLMENT_NUMBER'
                   AS total_installment_number )
              );
BEGIN
     FOR recresult IN curresult LOOP
          dbms_output.put_line(recresult.billed_installment_number || ' installment');
          IF dtchngpkgdate > dtnxtbilldate AND dtchngpkgdate > dtbilledtodate
          THEN
               p_billed_installments := recresult.billed_installment_number + 1;
          END IF;
          IF dtchngpkgdate < dtnxtbilldate AND dtchngpkgdate <= dtbilledtodate
          THEN
               p_billed_installments := recresult.billed_installment_number;
          END IF;
     END LOOP;    
END;

Когда я явно выполняю запрос, я получаю ожидаемые результаты.Но я получаю NULL для RECRESULT.BILLED_INSTALLMENT_NUMBER и RECRESULT.TOTAL_INSTALLMENT_NUMBER, когда я пытаюсь получить доступ с помощью CURSOR For Loop.Может кто-нибудь предложить, пожалуйста, по этому поводу?

...