當我嘗試運行此代碼時,它不顯示任何輸出,我不知道爲什麼。SQL過程 - 什麼都不打印
此程序接收客戶ID並顯示由指定客戶製作的所有訂單 。它使用光標來存儲訂單的詳細信息 ,然後打印詳細信息。
SET SERVEROUTPUT ON;
create or replace PROCEDURE procedure_CustOrderHistory (cust_id IN number) AS
CURSOR c_CustOrderHistory IS
Select o.order_id, o.order_totalCost, o.order_date, cu.customer_firstName,
cu.customer_lastName, s.staff_firstName, s.staff_lastName, os.order_status
FROM orders o, customer cu, staff s, order_status os
where o.customer_id=cu.customer_id AND s.staff_id = o.staff_id AND
os.order_statusID = o.order_statusID and cu.customer_id = cust_id ;
BEGIN
FOR r_order IN c_CustOrderHistory
LOOP
dbms_output.put_line('Order ID: '||r_order.order_id || ', Order Total Cost: ' || r_order.order_totalCost || 'BHD, Order Date: ' || r_order.order_date || ', Customer Name: ' || r_order.customer_firstName || ' ' || r_order.customer_lastName|| ', Customer Name: ' || r_order.customer_firstName || ' ' || r_order.customer_lastName || ', Order Status: '|| r_order.order_status);
END LOOP;
END;
這個匿名塊測試前面的程序。它詢問用戶 的ID,然後通過傳入客戶ID來調用該過程。
SET SERVEROUTPUT ON;
DECLARE
v_custid number := &customerid;
BEGIN
procedure_CustOrderHistory(v_custid);
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Customer ID not found.');
WHEN OTHERS THEN
dbms_output.put_line('Error! ' || SQLERRM);
END;
歡迎來到Stack Overflow。請閱讀[問]並創建[mcve]。我們可以說的是:如果沒有與WHERE子句相對應的數據並且沒有發生錯誤,則此查詢將不會打印任何內容。 – CodeCaster
你在哪裏運行?例如。在SQL * Plus中,在兩套代碼 – Boneist
之後,你需要一個正斜槓。正如Tom Kyte所說,這就像去找你的機械師並且說「我的車不會啓動,我不知道爲什麼」... – sandman