DECLARE mKeyID INT; 
begin 
update hr_leave set NAME= '11' ,STATUS= '1' ,ID=  '1' ,DEPARTMENT= '11' ,TIME= '11' ,EMPLOYEE= '11'  where id='1'; 
mKeyID := 1;
update hr_leave_work set TIME= 'ggg' ,CONTENT= 'ffff' ,ID= '1' ,LID=@mKeyID,TITLE= 'ttt'  where ID='1';
update hr_leave_work set TIME= '33' ,CONTENT= '3' ,ID= '3' ,LID=@mKeyID,TITLE= '3'  where ID='3'; 
end;
以上是更新,执行也不通过,还有是插入,也不行,哪位给看下,更新和插入都可以执行的一次性执行的语句?
DECLARE mKeyID INT; 
begin 
insert hr_leave (id,name,status)values(seq_hr_leave.nextval,'aa','1'); 
select seq_hr_leave.currval into mKeyID from dual;
insert hr_leave_work (id,hr_leave_id,title,TIME) values(seq_hr_leave_work.nextval, @mKeyID,'ttt','2009');
insert hr_leave_work (id,hr_leave_id,title,TIME) values(seq_hr_leave_work.nextval, @mKeyID,'eee','2009');
end;
哪位知道这些简单的执行?能给个正确的?谢谢

解决方案 »

  1.   

    DECLARE mKeyID NUMBER; 
    begin 
       update hr_leave set NAME= '11' ,STATUS= '1' ,ID=  '1' ,DEPARTMENT= '11' ,TIME= '11' ,EMPLOYEE= '11'  where id='1'; 
       mKeyID := 1; 
       update hr_leave_work set TIME= 'ggg' ,CONTENT= 'ffff' ,ID= '1' ,LID=mKeyID,TITLE= 'ttt'  where ID='1'; 
       update hr_leave_work set TIME= '33' ,CONTENT= '3' ,ID= '3' ,LID=mKeyID,TITLE= '3'  where ID='3'; 
       insert into hr_leave (id,name,status) values(seq_hr_leave.nextval,'aa','1'); 
       select seq_hr_leave.currval into mKeyID from dual; 
       insert into hr_leave_work (id,hr_leave_id,title,TIME) values(seq_hr_leave_work.nextval, mKeyID,'ttt','2009'); 
       insert into hr_leave_work (id,hr_leave_id,title,TIME) values(seq_hr_leave_work.nextval, mKeyID,'eee','2009'); 
    end; 
    / 1.insert后面掉了into
    2.oracle不需像sqlserver那样变量前加@