0

我希望将 FromDate 和 ToDate 传递到一个过程中,然后按如下方式更新和插入值。studentand表studLoad各有 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
4

2 回答 2

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;
于 2012-08-13T17:47:43.543 回答
-1

将 where 括在括号中,例如

where (s.insertdate>f_date);
于 2012-08-13T17:45:02.123 回答