0

我有一个用户输入项目编号的查询,该查询显示项目编号和项目描述,然后进入循环并显示数据库中每个项目编号的信息。在循环结束时,查询将根据显示的项目向您显示库存总量。

在循环开始之前如何显示项目编号和项目描述?一切都很好,期待那一部分。

我想看货品编号:5 货品描述:衬衫。我没有看到项目编号和项目描述的任何数据。

PL/SQL 查询:

SET SERVEROUTPUT ON
DECLARE
    CURSOR C1 
    IS
    SELECT items.items_numbers, items_description, items_size, items_price, items_qoh, sum(items_price*items_qoh) "Value" FROM inventories
    JOIN items ON inventories.items_number=items.items_numbers
    WHERE items.items_numbers='&enter_items_number'
    GROUP BY items.items_numbers, items_description, items_size, items_color, items_price, items_qoh
    ORDER BY items_price;

    totalvalue NUMBER(8,2); 
    test1 C1%rowtype;

    BEGIN
    OPEN C1;
    totalvalue:=0;  
    DBMS_OUTPUT.PUT_LINE('items ID: '  || test1.items_number ||  'items Description: ' ||  test1.items_description);
    close C1;
    open C1;
    LOOP

    fetch C1 into test1;
    exit when c1%notfound;

    DBMS_OUTPUT.PUT_LINE('Size: ' || test1.items_size);
    DBMS_OUTPUT.PUT_LINE('Price: ' || test1.items_price);
    DBMS_OUTPUT.PUT_LINE('QOH: ' || test1.items_qoh);
    DBMS_OUTPUT.PUT_LINE('Value: ' || test1.items_qoh*test1.items_price);
    totalvalue:=totalvalue+test1.items_qoh*test1.items_price;
    END LOOP;   

DBMS_OUTPUT.PUT_LINE('TOTAL VALUE: '  || totalvalue);

END;
/

输出:

 Item Number: Item Description:
 Size: S
 Price: 25.00
 QOH: 25
 Value: 625.0
 Size: L
 Color: Blue
 Price: 30.00
 QOH: 100
 Value: 3000.0
 TOTAL VALUE: 3625.0
4

1 回答 1

2

Just like you're fetching data from the open cursor within the loop, you'll have to fetch data before the loop to be able to print it. Right now you're only opening the cursor and closing it thereafter, without fetching from it. Be aware to check whether you were able to fetch a row or not (like you did with c1%notfound).

于 2012-10-08T19:48:07.433 回答