我目前工作的一個PL/SQL的問題,我必須創建一個程序內的光標,將給予相應的折扣,特定項目(10%價格> = $ 100和5 %價格> = 10美元)。當我不得不打電話給該程序時,我需要在特定訂單號的折扣後顯示訂單號,客戶名字,姓氏和物品的總淨成本(在這種情況下,我需要顯示訂單號2)。我無法讓它顯示這些信息。PL/SQL存儲和調用過程
這裏是我的一個光標創建過程至今代碼。
CREATE OR REPLACE PROCEDURE ComputeOrderTotal
(no_id IN orders.o_id%TYPE,
cfirst IN customer.c_first%TYPE,
clast IN customer.c_last%TYPE,
TotalNetCost OUT orders.ordertotal%TYPE) IS
CURSOR OrderCursor IS
SELECT order_line.inv_id, inv_price, ol_quantity, inv_price*ol_quantity AS ExtPrice,
CASE
WHEN inv_price*ol_quantity >= 100 THEN 0.9*(inv_price*ol_quantity)
WHEN inv_price*ol_quantity >= 10 THEN 0.95*(inv_price*ol_quantity)
ELSE
inv_price*ol_quantity
END AS NetCost
FROM inventory, order_line, orders, customer
WHERE orders.o_id = customer.c_id;
OrderRow OrderCursor%ROWTYPE;
BEGIN
OPEN OrderCursor;
LOOP
FETCH OrderCursor INTO OrderRow;
EXIT WHEN OrderCursor%NOTFOUND;
TotalNetCost :=TotalNetCost + OrderRow.NetCost;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Order Number: ' || no_id || 'First Name: ' || cfirst || 'Last Name: ' ||
clast || 'Total Net Cost: ' || TO_CHAR(TotalNetCost, '$0999.99'));
END;
這裏是我調用過程的代碼。
DECLARE
no_id orders.o_id%TYPE;
cfirst customer.c_first%TYPE;
clast customer.c_last%TYPE;
TotalNetCost orders.ordertotal%TYPE;
BEGIN
ComputeOrderTotal(2, cfirst, clast, TotalNetCost);
END;
感謝您的幫助!
什麼問題? – 2013-04-24 19:20:41
我無法顯示訂單編號2的名字,姓氏和價格 – MSmits23 2013-04-24 19:24:31
[tag:plsql]與[tag:mysql]有什麼關係? – Kermit 2013-04-24 19:30:57