【发布时间】:2016-07-14 08:25:10
【问题描述】:
我有一个包含customer ID 和order ID 以及其他一些数据的表。
我想创建一个procedure,将customer ID 作为输入并查看表格内部。
如果该客户存在,则打印该客户的order 详细信息,然后
如果客户不存在,则提出exception“找不到客户。”
我有这段代码,但它不能正常工作,或者我对这个问题的处理方法有误。
CREATE OR REPLACE PROCEDURE order_details(customer NUMBER)
IS
CURSOR order_cursor IS
SELECT ORDER_ID, ORDER_DATE, TOTAL, CUSTOMER_ID
FROM PRODUCT_ORDER
WHERE CUSTOMER_ID = customer ;
order_row order_cursor%ROWTYPE ;
customer_error EXCEPTION ;
BEGIN
FOR order_row IN order_cursor
LOOP
IF order_cursor%FOUND THEN
dbms_output.put_line ('order id = ' || order_row.ORDER_ID) ;
ELSE
RAISE customer_error ;
END IF;
END LOOP;
EXCEPTION
WHEN customer_error THEN
dbms_output.put_line ('no customer' ) ;
END;
所以如果我用这一行运行程序
BEGIN
order_details(103);
END;
我得到两个结果,因为该客户的订单存在。
如果我用这条线运行程序
BEGIN
order_details(101);
END;
我什么也没有收到(甚至没有错误),因为该客户没有订单。
【问题讨论】:
标签: plsql oracle11g exception-handling procedure