как распечатать значения курсора - PullRequest
0 голосов
/ 20 марта 2020

Я новичок в программировании pl sql. У меня есть следующий код курсора.

DECLARE
  CURSOR cs_get_pricing(ca_ite_id VARCHAR2, ca_prg_id NUMBER) IS
    SELECT pri_ite_id,
           pri_prg_id,
           pri_price,
           pri_regular_price,
           pri_discount_period
    FROM   PRICE
    WHERE  pri_ite_id = ca_ite_id
    AND    pri_prg_id = ca_prg_id
    AND    TRUNC(SYSDATE) BETWEEN pri_startdt AND pri_enddt;

  rec_get_pricing    cs_get_pricing%ROWTYPE;
BEGIN
  OPEN cs_get_pricing('BTSTNDM203005', 700);

  FETCH cs_get_pricing  INTO  rec_get_pricing;
  DBMS_OUTPUT.PUT_LINE('test');
  CLOSE cs_get_pricing;

  dbms_output.put_line(rec_get_pricing.pri_regular_price);
END;

Этот код получает компиляцию, но не печатает никаких значений. Я проверил таблицу, в ней есть данные для вышеупомянутых значений. как напечатать значения курсора?

1 Ответ

0 голосов
/ 21 марта 2020

Попробуйте нижеприведенную ссылку, а также ссылку

    DECLARE
        CURSOR cs_get_pricing(
          ca_ite_id VARCHAR2,
          ca_prg_id NUMBER) IS
          SELECT pri_ite_id,
                 pri_prg_id,
                 pri_price,
                 pri_regular_price,
                 pri_discount_period
          FROM   price
          WHERE  pri_ite_id = ca_ite_id
                 AND pri_prg_id = ca_prg_id
                 AND Trunc(SYSDATE) BETWEEN pri_startdt AND pri_enddt;
        rec_get_pricing cs_get_pricing%ROWTYPE;
    BEGIN
        OPEN cs_get_pricing('BTSTNDM203005', 700);
                LOOP 
        FETCH cs_get_pricing INTO rec_get_pricing;
                EXIT WHEN cs_get_pricing%NOTFOUND;
        dbms_output.Put_line('test');
        dbms_output.Put_line(rec_get_pricing.pri_regular_price);
        END LOOP;

        CLOSE cs_get_pricing;
    END; 
...