oracle 8i订货:
订单参数(物品标号,数量)在库存表中找到该物品的数量,若大于订单数量,则库存数减少相应数量,
若小于,则不变。create or replace procedure saledisc(pid in number, amount in number) is
a number;
beginselect quantity into a 
from saleonline.disc
where id=pid;if a>amount then
insert into saleonline.disc 
values(amount)
where id=pid
endif 
end

解决方案 »

  1.   

    SQL> create table disc(id number,quantity number);Table createdSQL> insert into disc select 1,20 from dual
      2  union all select 2,30 from dual
      3  union all select 3,40 from dual
      4  union all select 4,25 from dual;4 rows insertedSQL> select * from disc;        ID   QUANTITY
    ---------- ----------
             1         20
             2         30
             3         40
             4         25
    SQL>  CREATE OR REPLACE PROCEDURE SALEDISC(PID IN NUMBER,AMOUNT IN NUMBER)
      2      IS
      3      A NUMBER:=0; /*这里记得加;号*/
      4      BEGIN
      5        SELECT QUANTITY INTO A FROM DISC WHERE ID=PID;
      6        IF A>AMOUNT THEN
      7          UPDATE DISC SET QUANTITY=A-AMOUNT WHERE ID=PID;
      8        END IF;/*这里记得加;号*/
      9      END SALEDISC;
     10  /
    我的是9i
    Procedure createdSQL> SELECT * FROM DISC;        ID   QUANTITY
    ---------- ----------
             1         20
             2         30
             3         40
             4         25SQL> BEGIN
      2    SALEDISC(1,10);
      3  END;
      4  /PL/SQL procedure successfully completedSQL> SELECT * FROM DISC;        ID   QUANTITY
    ---------- ----------
             1         10
             2         30
             3         40
             4         25SQL>
      

  2.   

    遇到错误,用
    Show err 察看错误原因