DECLARE
o_id Order_Items.Order_ID%TYPE;
i_id NUMBER(10);
qun Order_Items.Quantity%TYPE;
u_price Order_Items.Unit_Price%TYPE;
total INT;
CURSOR Orders IS SELECT * FROM Order_Items;
BEGIN
total := u_price * qun;
SELECT Order_Items.order_id, COUNT(item_id) item_count, SUM(unit_price * quantity) total
INTO o_id, i_id, total
FROM Order_items
GROUP BY order_id
HAVING SUM(unit_price * quantity) > 500000
AND COUNT(item_id) BETWEEN 10 AND 12
ORDER BY total DESC, item_count DESC;
dbms_output.put_line(LPAD('-', 60, '-'));
dbms_output.put_line(RPAD('Order ID', 20) || RPAD('Item Count', 20) ||RPAD('Total', 20));
dbms_output.put_line(LPAD('-', 60, '-'));
dbms_output.put_line(RPAD(o_id, 20) || RPAD(i_id, 20) || RPAD(total, 20));
dbms_output.put_line(LPAD('-', 60, '-'));
END;
/
使用HAVING
子句,我编写了一个PL/SQL代码来查找值大于500,000且每个订单中的产品数量介于10和12之间的订单。
但是,我得到了ORA-01422
错误。可能是什么问题?
1条答案
按热度按时间vwkv1x7d1#
您的“Order_items”中有多个不同的“order_id”,因此您无法将结果提取到变量中:必须将LOOP或BULK COLECT放入记录表中。