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
订单参数(物品标号,数量)在库存表中找到该物品的数量,若大于订单数量,则库存数减少相应数量,
若小于,则不变。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
解决方案 »
- java.sql.SQLException: ORA-01017: invalid username/password; logon denied
- 怎么查当前节点及其所有子节点
- 请问:Oracle中,如何得到某个日期的年份?
- 一个SQL查询缓慢的问题
- 触发器需要提交吗?
- 怎么可以看oracle的关于数据的插入,删除,修改的日志
- Oracle11g 安装失败!Enterprise Manager configuration failed due to the following error
- oracle求助
- 哪里有oracle8i for windows的下载链接?
- 请问ORACLE中有无这样的方法。。。GOTO
- [高分200求助]一个简单的查询的存储过程为什么老是不能执行!
- oracle 触发器修改触发事件的表的另一字段
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>
Show err 察看错误原因