【发布时间】:2020-07-04 08:50:08
【问题描述】:
SPOOL /Users/gongjiaxi/Desktop/solution2
SET ECHO ON
SET FEEDBACK ON
SET LINESIZE 100
SET PAGESIZE 200
SET SERVEROUTPUT ON
create PROCEDURE INSERT_ORDER_DETAIL(order_id ORDER_DETAIL.ORDER_ID%TYPE,
product_name ORDER_DETAIL.PRODUCT_NAME%TYPE,
unit_price ORDER_DETAIL.UNIT_PRICE%TYPE,
quantity ORDER_DETAIL.QUANTITY%TYPE,
discount ORDER_DETAIL.DISCOUNT%TYPE)
IS
discontinued PRODUCT.DISCONTINUED%TYPE;
BEGIN
IF discontinued = 'N' THEN
INSERT INTO ORDER_DETAIL(ORDER_ID, PRODUCT_NAME, UNIT_PRICE, QUANTITY, DISCOUNT)
VALUES (order_id, product_name, unit_price, quantity, discount);
end if;
IF discontinued = 'Y' THEN
DBMS_OUTPUT.PUT_LINE('The product is not availiable');
end if;
end;
/
EXECUTE INSERT_ORDER_DETAIL(1000,'Chai',18.00,1002,0.9);
EXECUTE INSERT_ORDER_DETAIL(1000,'Alice Mutton', 39.00,1000,0.8);
SPOOL OFF
但结果是
Procedure INSERT_ORDER_DETAIL compiled
SQL> EXECUTE INSERT_ORDER_DETAIL(1000,'Chai',18.00,1002,0.9);
PL/SQL procedure successfully completed.
SQL> EXECUTE INSERT_ORDER_DETAIL(1000,'Alice Mutton', 39.00,1000,0.8);
PL/SQL procedure successfully completed."
我执行的两条数据中的一条应该将一条数据插入到表中,另一条应该调用 DBMS_OUTPUT。但是没有一个成功。
【问题讨论】:
-
我有点困惑。我要实现的是通过Product的dicontinued属性判断是否往Order_detail中插入数据。以及如何修改它谢谢
-
你只检查
IF discontinued = 'N' OR 'Y'但条件是什么?您从哪里获得产品是否停产的信息? PL/SQL 程序不是有远见的。