大致是这样的,另外,好像可以去掉最外面的一对begin-end
---------------------------------------------------------------
CREATE OR REPLACE function SSP_InsOaCaseStep ( 
p_BaseDocID Integer,
p_MoveStep   Integer,
p_ParaStep   Integer,
p_PreStep   Integer,
p_FlowDefineID Integer,
p_SendPersonID Integer,
p_ReceivePersonID Integer,
p_State  Integer)
return Integer
IS
begin
begin
begin
insert   TabDocState(chvBaseDocID,
                                        intMoveStep,
                                        intParaStep,
                                         PreStep,
                                         chvSendPersonID,
                                         chvReceivePersonID,
                                         SimplyFlow,
                                         State)
            values (  p_BaseDocID,
                                      p_MoveStep,
                                       p_ParaStep,
                                      p_PreStep,
                                      p_SendPersonID,
                                     p_ReceivePersonID,
                                     p_FlowDefineID,
                                     p_State);

  EXCEPTION
    WHEN OTHERS THEN
rollback;
return 0;
  END; update TabBasicDoc
  set  chvCurStep  =  p_MoveStep   
  WHERE chvID = p_BaseDocID;   EXCEPTION
    WHEN OTHERS THEN
rollback;
return 0;
  END; commit;

return 1;
end
end
---------------------------------------------------------------

解决方案 »

  1.   

    CREATE PROCEDURE   SSP_InsOaCaseStep(
    p_BaseDocID number,
    p_MoveStep  number,
    p_ParaStep  number,
    p_PreStep  number,
    p_FlowDefineID number,
    p_SendPersonID number,
    p_ReceivePersonID number,
    p_State  number)
     AS
    begin

    begin
    insert   TabDocState(chvBaseDocID,
                                            intMoveStep,
                                            intParaStep,
                                             PreStep,
                                             chvSendPersonID,
                                             chvReceivePersonID,
                                             SimplyFlow,
                                             State)
                values (  p_BaseDocID,
                                         p_MoveStep,
                                          p_ParaStep,
                                         p_PreStep,
                                         p_SendPersonID,
                                        p_ReceivePersonID,
                                        p_FlowDefineID,
                                        p_State);
    commit;
             exception
    when others then
    rollback; 
    end
             begin
    update TabBasicDoc
      set  chvCurStep  =  p_MoveStep   WHERE chvID = p_BaseDocID;
             commit;
    exception
             when others then
             rollback;
    endend
    /
      

  2.   

    to  beckhambobo(beckham) 返回值怎样处理???
      

  3.   

    SSP_InsOaCaseStep(flag out number,...)
    ....
    exception
    when others then
    flag:=0;
    rollback; 
    end;
    ....