我是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;
此代码将被编译,但不会打印任何值。我已经检查了表,它具有上述值的数据。如何打印光标值?
答案 0 :(得分:0)
请尝试以下操作,并同时参阅此link
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;