有两个表,订货表和入库表订货表,有字段:订单号,供货商,订货日期,到货日期
入库表,有字段:订单号,入库日期,是否按时到货如果入库日期不大于到货日期,就是按时到货,否则为否。现要求,写一个存储过程,在录入入库时间时,比较入库表中的“入库日期”和订货表中的“到货日期”,如果“入库日期”不大于“到货日期”,就在入库表中的“是否按时到货”字段中写入“是”,否则写入“否”。这个存储过程应该怎么写啊?请高手帮帮忙,急用
入库表,有字段:订单号,入库日期,是否按时到货如果入库日期不大于到货日期,就是按时到货,否则为否。现要求,写一个存储过程,在录入入库时间时,比较入库表中的“入库日期”和订货表中的“到货日期”,如果“入库日期”不大于“到货日期”,就在入库表中的“是否按时到货”字段中写入“是”,否则写入“否”。这个存储过程应该怎么写啊?请高手帮帮忙,急用
解决方案 »
- 求助insert values效率问题
- 怎样查看所定义过的存储过程列表,另外查看某个存储过程的定义吗
- oracle92换oracle10g系统速度变慢
- oracle stream在多源复制中支持多少个数据源
- 如何使用sql生成一个状态的列
- 【愁死了】ORA-03115错误,大伙们来帮帮忙啊,弄2天了,快被搞疯掉了~!!!
- 把一个字段的记录分为三段,这样每段记录为4个,我想将这三段记录分别插入到视图中三个字段,但是为什么三个字段的记录不对齐?错开了,急急!!!
- 自编函数在数据量大时特别慢,有没有好办法?
- oracle的存储过程支持多进程执行吗?
- oracle数据批量插入为何这么慢
- Oracle授权给用户问题
- 使用链接服务器,更新Oracle的数据,出现实际值: 4, 最大值: 1
create or replace procedure p1
as
rkrq date;
dhrq date;
cursor cur_dd is select 入库日期,到货日期 from 订货表 a,入库表 b where a.订单号=b.订单号;
begin
for cur_dd_rec in cur_dd loop
rkrq:=cur_dd_rec.入库日期;
dhrq:=cur_dd_rec.到货日期;
if rkrq<=dhrq then
update 入库表 set 是否按时到货='是';
else
update 入库表 set 是否按时到货='否';
end if;
end loop;
commit;
end;
--也可以用触发器create trigger tr1 after insert on 入库表 for each row
declare
rkrq date;
dhrq date;
cursor cur_dd is select 入库日期,到货日期 from 订货表 a,入库表 b where a.订单号=b.订单号;
begin
for cur_dd_rec in cur_dd loop
rkrq:=cur_dd_rec.入库日期;
dhrq:=cur_dd_rec.到货日期;
if rkrq<=dhrq then
update 入库表 set 是否按时到货='是';
else
update 入库表 set 是否按时到货='否';
end if;
end loop;
commit;
end;
当然也可以写一个触发器或者存储过程来处理。
如:触发器例子
CREATE OR REPLACE TRIGGER tr_ontime
AFTER INSERT OR UPDATE ON 入库表
FOR EACH ROW
DECLARE
v_date DATE;
BEGIN
SELECT 到货日期 INTO v_date FROM 订货表 WHERE 订单号 = :new.订单号;
IF :new.入库日期 > v_date THEN
:new.是否按时到货 := '是';
ELSE
:new.是否按时到货 := '否';
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;