我自己的机子oracle是11g的,执行正确。服务器是10g的,把存储过程移到上面执行,编译出错了。
出错的地方如下:
code=SQL]begin--行级锁
--select operdate bulk collect  into v_operdate from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2 for update wait 10;
for i in 1..PARAMS_ENTITYID_VARCHAR2.count loop
    select timestamp bulk collect  into v_timestamp from t_budgetvoucher where GUID=PARAMS_ENTITYID_VARCHAR2(i) for update wait 5;
end loop;[[/code] 指针指着这行。。
select timestamp bulk collect  into v_timestamp from t_budgetvoucher where GUID=PARAMS_ENTITYID_VARCHAR2(i) for update wait 5;
错误信息是:此表达式的类型声明不完整或格式不正确。
不明白为什么11g好好的,测试没问题。到10g上编译都通不过

解决方案 »

  1.   

    我自己的机子oracle是11g的,执行正确。服务器是10g的,把存储过程移到上面执行,编译出错了。
    出错的地方如下:
    begin--行级锁
    --select operdate bulk collect  into v_operdate from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2 for update wait 10;
    for i in 1..PARAMS_ENTITYID_VARCHAR2.count loop
        select timestamp bulk collect  into v_timestamp from t_budgetvoucher where GUID=PARAMS_ENTITYID_VARCHAR2(i) for update wait 5;
    end loop; 指针指着这行。。
    select timestamp bulk collect  into v_timestamp from t_budgetvoucher where GUID=PARAMS_ENTITYID_VARCHAR2(i) for update wait 5;
    错误信息是:此表达式的类型声明不完整或格式不正确。
    不明白为什么11g好好的,测试没问题。到10g上编译都通不过
      

  2.   

    type v_timestamp_table is table of t_budgetvoucher.timestamp%type index by binary_integer;
        v_timestamp v_timestamp_table;
      

  3.   

    我把全部代码贴一下吧--构建数组
    create or replace type ACTIONTYPE_VARCHAR2  as table of varchar2(1000); 
    create or replace type ENTITYID_VARCHAR2  as table of varchar2(1000); 
    --create or replace type VOUTYPEID_VARCHAR2  as table of varchar2(1000); 
    create or replace type WFID_VARCHAR2  as table of varchar2(1000); 
    create or replace type CURRENTNODE_VARCHAR2  as table of varchar2(1000); 
    create or replace type CURRENTSTATUS_NUMBER as table of number(10); 
    create or replace type NEXTNODE_VARCHAR2  as table of varchar2(1000); 
    create or replace type NEXTSTATUS_NUMBER as table of number(10); 
    create or replace type IS_UNDO_NUMBER as table of number(10); 
    create or replace type OPERUSER_VARCHAR2  as table of varchar2(1000); 
    create or replace type INITMONEY_NUMBER as table of number(10);
    create or replace type RESULTMONEY_NUMBER as table of number(10);
    create or replace type TOLLYFLAG_NUMBER as table of number(10); 
    create or replace type AUTOAUDITFLAG_NUMBER as table of number(10);
    create or replace type TIMESTAMP_VARCHAR2  as table of varchar2(1000);
    create or replace type MESSAGE_VARCHAR2  as table of varchar2(1000);--定义过程
    create or replace procedure drivenWorkFlow(
    PARAMS_ACTIONTYPE_VARCHAR2 in ACTIONTYPE_VARCHAR2,
    PARAMS_ENTITYID_VARCHAR2 in ENTITYID_VARCHAR2,
    --PARAMS_VOUTYPEID_VARCHAR2 in VOUTYPEID_VARCHAR2,
    PARAMS_WFID_VARCHAR2 in WFID_VARCHAR2,--还原
    PARAMS_CURRENTNODE_VARCHAR2 in CURRENTNODE_VARCHAR2,--还原 
    PARAMS_CURRENTSTATUS_NUMBER in CURRENTSTATUS_NUMBER,
    PARAMS_NEXTNODE_VARCHAR2 in NEXTNODE_VARCHAR2,
    PARAMS_NEXTSTATUS_NUMBER in NEXTSTATUS_NUMBER,  
    PARAMS_IS_UNDO_NUMBER in IS_UNDO_NUMBER,  
    PARAMS_OPERUSER_VARCHAR2 in OPERUSER_VARCHAR2,   
    PARAMS_INITMONEY_NUMBER in INITMONEY_NUMBER,      
    PARAMS_RESULTMONEY_NUMBER in RESULTMONEY_NUMBER,  
    PARAMS_TOLLYFLAG_NUMBER in TOLLYFLAG_NUMBER,     
    PARAMS_AUTOAUDITFLAG_NUMBER in AUTOAUDITFLAG_NUMBER,  
    --PARAMS_WFID_VARCHAR2 in varchar2, 
    --PARAMS_CURRENTNODE_VARCHAR2(i) in varchar2,  
    PARAMS_TIMESTAMP_VARCHAR2 in TIMESTAMP_VARCHAR2,  VOUTYPEID_VARCHAR2 in varchar2, 
    --PARAMS_REMARK_VARCHAR2 in REMARK_VARCHAR2   
    var_message_array OUT MESSAGE_VARCHAR2, 
     var_error out varchar2

    is 
        var_nextnode varchar2(100);
        var_cur_count number;
        var_curstatus number;
        var_nextstatus number;
        var_nextnodeid varchar2(100);
        var_nextnodeidcur varchar2(100);
        var_nodetype varchar2(40); 
        var_count number;
        var_cur_loop_count number;
        type v_timestamp_table is table of t_budgetvoucher.timestamp%type index by binary_integer; 
        v_timestamp v_timestamp_table;
        --参数游标
        cursor cur1(i number) is
        select NEXTNODEID  from t_wfnodeconditions where WFID=PARAMS_WFID_VARCHAR2(i) and NODEID=PARAMS_CURRENTNODE_VARCHAR2(i);
        
    begin--行级锁
    --select operdate bulk collect  into v_operdate from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2 for update wait 10; 
    for i in 1..PARAMS_ENTITYID_VARCHAR2.count loop 
        select timestamp bulk collect  into v_timestamp from t_budgetvoucher where GUID=PARAMS_ENTITYID_VARCHAR2(i) for update wait 5; 
    end loop;--开辟异常数组 
    var_message_array:=MESSAGE_VARCHAR2();  for i in 1..PARAMS_ENTITYID_VARCHAR2.count loop 
      --判断nextnode数量
        select count(*) into var_count from t_wfnodeconditions where WFID=PARAMS_WFID_VARCHAR2(i) and NODEID=PARAMS_CURRENTNODE_VARCHAR2(i);
        if var_count =0 then 
        var_error:='当前节点没有子节点';
        end if;
      --根据业务id判断timestamp是否被修改
        select count(*) into var_cur_count from t_budgetvoucher where guid=PARAMS_ENTITYID_VARCHAR2(i) and to_char(TIMESTAMP,'yyyy-mm-dd hh24:mi:ssxff') =PARAMS_TIMESTAMP_VARCHAR2(i);
         
      --异常和提示
        if var_cur_count <>1 then 
        var_message_array.extend;
        var_message_array(var_message_array.count):='timestamp不相等,此条记录已被修改;';
        end if;
        if var_cur_count =1 then
        var_message_array.extend;
        var_message_array(var_message_array.count):='just for array extend';
        end if;
      

  4.   

    --不是会签节点
        if var_count =1 then
        select NEXTNODEID into var_nextnodeid from t_wfnodeconditions where WFID=PARAMS_WFID_VARCHAR2(i) and NODEID=PARAMS_CURRENTNODE_VARCHAR2(i);
        select NODETYPE into var_nodetype from t_wfnodes where GUID =var_nextnodeid;
        end if;
            
        if var_count=1 and var_cur_count=1 then  
        --nextnode不是结束节点
          if var_nodetype<>'003' then
          --操作类型区分nextnode
            if PARAMS_ACTIONTYPE_VARCHAR2(i)='input' and var_count=1 then
            var_nextnode:=var_nextnodeid;
            var_curstatus:=0;
            var_nextstatus:=1;
            end if;        if PARAMS_ACTIONTYPE_VARCHAR2(i)='next' and var_count=1 then
            var_nextnode:=var_nextnodeid;
            var_curstatus:=2;
            var_nextstatus:=3;
            end if;        if PARAMS_ACTIONTYPE_VARCHAR2(i)='edit' then
            var_nextnode:=PARAMS_CURRENTNODE_VARCHAR2(i);
            var_curstatus:=4;
            var_nextstatus:=5;
            end if;        if PARAMS_ACTIONTYPE_VARCHAR2(i)='提取' then
            var_nextnode:=PARAMS_CURRENTNODE_VARCHAR2(i);
            var_curstatus:=6;
            var_nextstatus:=7;
            end if;        if PARAMS_ACTIONTYPE_VARCHAR2(i)='HANG' then
            var_nextnode:=PARAMS_CURRENTNODE_VARCHAR2(i);
            var_curstatus:=8;
            var_nextstatus:=9;
            end if;    --根据操作类型写sql        if PARAMS_ACTIONTYPE_VARCHAR2(i)='input' or PARAMS_ACTIONTYPE_VARCHAR2(i)='next' or PARAMS_ACTIONTYPE_VARCHAR2(i)='edit' or
            PARAMS_ACTIONTYPE_VARCHAR2(i)='提取' or PARAMS_ACTIONTYPE_VARCHAR2(i)='HANG' then            insert into t_wfcompletetasks  select * from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;            update t_wfcurrenttasks set CURRENTNODE=PARAMS_CURRENTNODE_VARCHAR2(i),CURRENTSTATUS=var_curstatus,NEXTNODE=var_nextnode,
                NEXTSTATUS=var_nextstatus,ACTIONTYPE=PARAMS_ACTIONTYPE_VARCHAR2(i),OPERUSER=PARAMS_OPERUSER_VARCHAR2(i),
                OPERDATE=sysdate where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;
                
            end if;
            /*
            if PARAMS_ACTIONTYPE_VARCHAR2(i)='edit' or
            PARAMS_ACTIONTYPE_VARCHAR2(i)='提取' or PARAMS_ACTIONTYPE_VARCHAR2(i)='HANG' then
                    if i=1 then
                    insert into t_wfcompletetasks select * from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2 ;
                    update t_wfcurrenttasks set CURRENTNODE=PARAMS_CURRENTNODE_VARCHAR2(i),CURRENTSTATUS=var_curstatus,NEXTNODE=var_nextnode,
                    NEXTSTATUS=var_nextstatus,ACTIONTYPE=PARAMS_ACTIONTYPE_VARCHAR2(i),OPERUSER=PARAMS_OPERUSER_VARCHAR2(i),
                    OPER
                    =sysdate where WFID=PARAMS_WFID_VARCHAR2;
                    end if;                if i>1 then
                    update t_wfcurrenttasks set CURRENTNODE=PARAMS_CURRENTNODE_VARCHAR2(i),CURRENTSTATUS=var_curstatus,NEXTNODE=var_nextnode,
                    NEXTSTATUS=var_nextstatus,ACTIONTYPE=PARAMS_ACTIONTYPE_VARCHAR2(i),OPERUSER=PARAMS_OPERUSER_VARCHAR2(i),
                    OPERDATE=sysdate where WFID=PARAMS_WFID_VARCHAR2;
                    end if;
            end if;
            */
            if PARAMS_ACTIONTYPE_VARCHAR2(i)='recall' or PARAMS_ACTIONTYPE_VARCHAR2(i)='discard' or PARAMS_ACTIONTYPE_VARCHAR2(i)='delete' or
            PARAMS_ACTIONTYPE_VARCHAR2(i)='back'  then
             
                delete from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;
                
            end if;--nextnode为结束节点
        if var_nodetype='003' then
        delete from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;
        end if;   end if;
    end if; 
      

  5.   

    --会签节点
            if var_count>1 and var_cur_count=1 then
                    var_cur_loop_count:=i;                if PARAMS_ACTIONTYPE_VARCHAR2(i)='edit' then
                    var_nextnode:=PARAMS_CURRENTNODE_VARCHAR2(i); 
                    var_curstatus:=4;
                    var_nextstatus:=5;
                    end if;                if PARAMS_ACTIONTYPE_VARCHAR2(i)='提取' then
                    var_nextnode:=PARAMS_CURRENTNODE_VARCHAR2(i);
                    var_curstatus:=6;
                    var_nextstatus:=7;
                    end if;                if PARAMS_ACTIONTYPE_VARCHAR2(i)='HANG' then
                    var_nextnode:=PARAMS_CURRENTNODE_VARCHAR2(i);
                    var_curstatus:=8;
                    var_nextstatus:=9;
                    end if;        if PARAMS_ACTIONTYPE_VARCHAR2(i)='edit' or PARAMS_ACTIONTYPE_VARCHAR2(i)='提取' or PARAMS_ACTIONTYPE_VARCHAR2(i)='HANG' then
                   /*
                    if i=1 then
                    --往历史表插入数据,更新currenttask表
                    insert into t_wfcompletetasks  select * from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2 and OPERUSER=PARAMS_OPERUSER_VARCHAR2(i);                update t_wfcurrenttasks set CURRENTNODE=PARAMS_CURRENTNODE_VARCHAR2(i),CURRENTSTATUS=var_curstatus,NEXTNODE=var_nextnode,
                    NEXTSTATUS=var_nextstatus,ACTIONTYPE=PARAMS_ACTIONTYPE_VARCHAR2(i),OPERUSER=PARAMS_OPERUSER_VARCHAR2(i),
                    OPERDATE=sysdate where WFID=PARAMS_WFID_VARCHAR2;
                    *
                    delete from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2 and OPERUSER=PARAMS_OPERUSER_VARCHAR2(i);
                    insert into t_wfcurrenttasks (WFID,ENTITYID ,CURRENTNODE,  CURRENTSTATUS,NEXTNODE  ,NEXTSTATUS ,
                     ACTIONTYPE  ,IS_UNDO  ,OPERUSER,OPERDATE,INITMONEY,RESULTMONEY,  REMARK  ,TOLLYFLAG, AUTOAUDITFLAG,VOUTYPEID)
                            values (PARAMS_WFID_VARCHAR2,PARAMS_ENTITYID_VARCHAR2(i),PARAMS_CURRENTNODE_VARCHAR2(i) ,var_curstatus,var_nextnode,var_nextstatus,
                            PARAMS_ACTIONTYPE_VARCHAR2(i),PARAMS_IS_UNDO_NUMBER(i),PARAMS_OPERUSER_VARCHAR2(i),sysdate,PARAMS_INITMONEY_NUMBER(i),
                            PARAMS_RESULTMONEY_NUMBER(i),'test',PARAMS_TOLLYFLAG_NUMBER(i),PARAMS_AUTOAUDITFLAG_NUMBER(i),VOUTYPEID_VARCHAR2);
                    end if;               if i>1 then
                    insert into t_wfcurrenttasks (WFID,ENTITYID ,CURRENTNODE,  CURRENTSTATUS,NEXTNODE  ,NEXTSTATUS ,
                     ACTIONTYPE  ,IS_UNDO  ,OPERUSER,OPERDATE,INITMONEY,RESULTMONEY,  REMARK  ,TOLLYFLAG, AUTOAUDITFLAG,VOUTYPEID)
                            values (PARAMS_WFID_VARCHAR2,PARAMS_ENTITYID_VARCHAR2(i),PARAMS_CURRENTNODE_VARCHAR2(i) ,var_curstatus,var_nextnode,var_nextstatus,
                            PARAMS_ACTIONTYPE_VARCHAR2(i),PARAMS_IS_UNDO_NUMBER(i),PARAMS_OPERUSER_VARCHAR2(i),sysdate,PARAMS_INITMONEY_NUMBER(i),
                            PARAMS_RESULTMONEY_NUMBER(i),'test',PARAMS_TOLLYFLAG_NUMBER(i),PARAMS_AUTOAUDITFLAG_NUMBER(i),VOUTYPEID_VARCHAR2);
                   end if;
                    */
                insert into t_wfcompletetasks  select * from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;            update t_wfcurrenttasks set CURRENTNODE=PARAMS_CURRENTNODE_VARCHAR2(i),CURRENTSTATUS=var_curstatus,NEXTNODE=var_nextnode,
                NEXTSTATUS=var_nextstatus,ACTIONTYPE=PARAMS_ACTIONTYPE_VARCHAR2(i),OPERUSER=PARAMS_OPERUSER_VARCHAR2(i),
                OPERDATE=sysdate where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;         end if;
         --循环游标
             open cur1(i);
             loop
               var_nextnodeidcur  :=null; 
               fetch cur1 into var_nextnodeidcur;
               EXIT WHEN cur1%NOTFOUND;            select NODETYPE into var_nodetype from t_wfnodes where GUID =var_nextnodeidcur;
               if PARAMS_ACTIONTYPE_VARCHAR2(i)='input' then
                var_nextnode:=var_nextnodeidcur;
                var_curstatus:=0;
                var_nextstatus:=1;
                end if;            if PARAMS_ACTIONTYPE_VARCHAR2(i)='next' then
                var_nextnode:=var_nextnodeidcur;
                var_curstatus:=2;
                var_nextstatus:=3;
                end if;           if var_nodetype<>'003' then
                --往历史表插入数据,删除currenttask表记录,插入count条记录
                     if PARAMS_ACTIONTYPE_VARCHAR2(i)='input' or PARAMS_ACTIONTYPE_VARCHAR2(i)='next' then
                          --if var_cur_loop_count=i and cur1%ROWCOUNT=1  then
                          if  var_cur_count=1 and cur1%ROWCOUNT=1  then
                          insert into t_wfcompletetasks  select * from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;
                          delete from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;
                          insert into t_wfcurrenttasks (WFID,ENTITYID ,CURRENTNODE,  CURRENTSTATUS,NEXTNODE  ,NEXTSTATUS ,
                   ACTIONTYPE  ,IS_UNDO  ,OPERUSER,OPERDATE,INITMONEY,RESULTMONEY,  REMARK  ,TOLLYFLAG, AUTOAUDITFLAG,VOUTYPEID)
                          values (PARAMS_WFID_VARCHAR2(i),PARAMS_ENTITYID_VARCHAR2(i),PARAMS_CURRENTNODE_VARCHAR2(i) ,var_curstatus,var_nextnodeidcur,var_nextstatus,
                          PARAMS_ACTIONTYPE_VARCHAR2(i),PARAMS_IS_UNDO_NUMBER(i),PARAMS_OPERUSER_VARCHAR2(i),sysdate,PARAMS_INITMONEY_NUMBER(i),
                          PARAMS_RESULTMONEY_NUMBER(i),'node_one',PARAMS_TOLLYFLAG_NUMBER(i),PARAMS_AUTOAUDITFLAG_NUMBER(i),VOUTYPEID_VARCHAR2);
                         /*
                          update t_wfcurrenttasks set CURRENTNODE=PARAMS_CURRENTNODE_VARCHAR2(i),CURRENTSTATUS=var_curstatus,NEXTNODE=var_nextnodeidcur,
                          NEXTSTATUS=var_nextstatus,ACTIONTYPE=PARAMS_ACTIONTYPE_VARCHAR2(i),OPERUSER=PARAMS_OPERUSER_VARCHAR2(i),
                          OPERDATE=sysdate,re='sss' where WFID=PARAMS_WFID_VARCHAR2 and to_char(operdate,'yyyy-mm-dd hh24:mi:ss') =PARAMS_TIMESTAMP_VARCHAR2(i);
                          
                          insert into t_wfcompletetasks  select * from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2 and OPERUSER=PARAMS_OPERUSER_VARCHAR2(i);                      delete from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2 and OPERUSER=PARAMS_OPERUSER_VARCHAR2(i);                      insert into t_wfcurrenttasks (WFID,ENTITYID ,CURRENTNODE,  CURRENTSTATUS,NEXTNODE  ,NEXTSTATUS ,
                   ACTIONTYPE  ,IS_UNDO  ,OPERUSER,OPERDATE,INITMONEY,RESULTMONEY,  REMARK  ,TOLLYFLAG, AUTOAUDITFLAG,VOUTYPEID)
                          values (PARAMS_WFID_VARCHAR2,PARAMS_ENTITYID_VARCHAR2(i),PARAMS_CURRENTNODE_VARCHAR2(i) ,var_curstatus,var_nextnodeidcur,var_nextstatus,
                          PARAMS_ACTIONTYPE_VARCHAR2(i),PARAMS_IS_UNDO_NUMBER(i),PARAMS_OPERUSER_VARCHAR2(i),sysdate,PARAMS_INITMONEY_NUMBER(i),
                          PARAMS_RESULTMONEY_NUMBER(i),'test',PARAMS_TOLLYFLAG_NUMBER(i),PARAMS_AUTOAUDITFLAG_NUMBER(i),VOUTYPEID_VARCHAR2);                      update t_wfcurrenttasks set CURRENTNODE=PARAMS_CURRENTNODE_VARCHAR2(i),CURRENTSTATUS=var_curstatus,NEXTNODE=var_nextnodeidcur,
                          NEXTSTATUS=var_nextstatus,ACTIONTYPE=PARAMS_ACTIONTYPE_VARCHAR2(i),OPERUSER=PARAMS_OPERUSER_VARCHAR2(i),
                          OPERDATE=sysdate where WFID=PARAMS_WFID_VARCHAR2;
                          */
                          --var_cur_loop_count:=i+1;
                          end if;                       if var_cur_count=1 and cur1%ROWCOUNT>1 then
                           
                          insert into t_wfcurrenttasks (WFID,ENTITYID ,CURRENTNODE,  CURRENTSTATUS,NEXTNODE  ,NEXTSTATUS ,
                   ACTIONTYPE  ,IS_UNDO  ,OPERUSER,OPERDATE,INITMONEY,RESULTMONEY,  REMARK  ,TOLLYFLAG, AUTOAUDITFLAG,VOUTYPEID)
                          values (PARAMS_WFID_VARCHAR2(i),PARAMS_ENTITYID_VARCHAR2(i),PARAMS_CURRENTNODE_VARCHAR2(i) ,var_curstatus,var_nextnodeidcur,var_nextstatus,
                          PARAMS_ACTIONTYPE_VARCHAR2(i),PARAMS_IS_UNDO_NUMBER(i),PARAMS_OPERUSER_VARCHAR2(i),sysdate,PARAMS_INITMONEY_NUMBER(i),
                          PARAMS_RESULTMONEY_NUMBER(i),'node>one',PARAMS_TOLLYFLAG_NUMBER(i),PARAMS_AUTOAUDITFLAG_NUMBER(i),VOUTYPEID_VARCHAR2);
                          end if;
                 
                     end if;                 if PARAMS_ACTIONTYPE_VARCHAR2(i)='recall' or PARAMS_ACTIONTYPE_VARCHAR2(i)='discard' or PARAMS_ACTIONTYPE_VARCHAR2(i)='delete' or
                     PARAMS_ACTIONTYPE_VARCHAR2(i)='back'  then
                     
                       delete from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;                 end if;            end if;
              end loop;
              close cur1;          if var_nodetype='003'  then
                delete from t_wfcurrenttasks where WFID=PARAMS_WFID_VARCHAR2(i) and entityid=PARAMS_ENTITYID_VARCHAR2(i) and voutypeid=VOUTYPEID_VARCHAR2;
              end if;
            end if;
     end loop;commit;    exception when others then
        rollback;
        raise;
    end drivenWorkFlow;
      

  6.   

    以上就是这个存储过程全部代码,实现批量处理工作流。在11G的orcale上除了并发没测试,其他的都测试了,没有问题。但是把代码copy到10G上就报错了。错误信息为:此表达式的类型声明不完整或格式不正确。
    而且指针指着的行不确定。
    期待高人能帮忙看下,不甚感激。
      

  7.   

    在11G的orcale上执行存储过程没有问题。但是把代码copy到10G上编译就报错了。错误信息为:此表达式的类型声明不完整或格式不正确。