合并oracle比较日期

时间:2012-08-13 17:04:53

标签: oracle oracle10g data-warehouse

我希望将FromDate和ToDate传递给一个过程,然后更新并插入值,如下所示。 studentstudLoad表各有3个字段:id,name和insertDate。

create or replace procedure incload(f_date date,t_date date) is
begin
    merge into studload sl
    using student s
        on (s.studid=sl.studid)
    when matched then
        update set sl.studname=s.studname, sl.insertdate= trunc(sysdate);
    when not matched then
        insert (sl.studid,sl.studname,sl.insertdate)
        values (s.studid,s.studname,trunc(sysdate)) 
        where s.insertdate > f_date;
end;

约会给我带来了麻烦。我哪里错了?

已修改以包含错误

 ERROR at line 12: PLS-00103: Encountered the symbol "END" 

1. create or replace procedure incLoad(f_date date,t_date date) is
2. begin
3. merge into studLoad sl

2 个答案:

答案 0 :(得分:1)

弄错了 - ;更新后不需要,即正确的代码是:

 create or replace procedure incLoad(f_date date,t_date date) is
begin
merge into studLoad sl
using student s
on (s.studID=sl.studID)
when matched then
update set sl.studName=s.studName, sl.insertDate=trunc(sysdate) where s.insertDate > f_date  // no semi-colon
WHEN NOT MATCHED
THEN
INSERT (sl.studID,sl.studName,sl.insertDate)
VALUES (s.studID,s.studName,trunc(sysdate)) where s.insertDate > f_date;
end;

答案 1 :(得分:-1)

将括号中的位置括在

where (s.insertdate>f_date);