------------------- -------------------------------------------------------
这里,我想执行存储过程的时候,顺便调另外一个存储过程,向某表插一条数据,调试下来正常,但当客户端运行时,就是无法将该条数据插进表里,谢谢大家,两日内,在线跪求答案
            OPEN tnt_conpiece(strunit_no);
             loop
                FETCH tnt_unit                                              
                INTO v_unit;                                            
                EXIT WHEN tnt_unit%NOTFOUND; 
             PK_ADDHIST.SP_CONPICSTATHIST(                                   
                     v_conpiece.Consignment_no,                                  
                     v_conpiece.Piece_no,                                        
                     strSeq,                                                         
                     strdepotid,                                                     
                     'COMM',                                                         
                      null,                                                           
                     '解包: Unit_Ref:'|| v_unit.Unit_Ref,                     
                     struserid                                                       
                    );                                                              
               end loop;   
               -----------------------------------------------------------------------------
            --根据strUnit_no--的一条记录更新TB_CON_PIECE表
            UPDATE tb_con_piece
               SET unit_no = NULL, current_depot_id = strdepotid
             WHERE unit_no = strunit_no;   
             ----------------------
             CLOSE tnt_conpiece;   
             ----------------------       
            --根据strUnit_no更新TB_UNIT表
            UPDATE tb_unit
               SET unit_status    = 'CL',
                   deallocate_dt  = SYSDATE,
                   deallocated_by = struserid
             WHERE unit_no = strunit_no;
          ELSE
            --如果unit_status等于'CL',重新循环执行下一个Unit_No
            IF v_unit.unit_status <> 'CL' THEN
              --如果sector_no不为空or如果current_depot_id不等于strDepotId
              IF NOT (v_unit.sector_no IS NULL) OR
                 v_unit.current_depot_id <> strdepotid THEN
                strerrunit_nos := strerrunit_nos || strunit_no || ',';
              END IF;
            END IF;
          END IF;
        END LOOP;
     ------------------- 
        CLOSE tnt_unit;
-------------
        intbgn := intnxt + 1;
      ELSE
        intbgn := intend + 1;
      END IF;
    END LOOP;
    COMMIT;
  EXCEPTION
    --存储过程异常
    WHEN OTHERS THEN
      ROLLBACK;
      strerror := substr(SQLERRM, 1, 200);
  END;
END pk_unitdeallocating;
主要看虚线扩起来的部分

解决方案 »

  1.   

    网上有人和我说,TNT_UNIT支撑了两层LOOP,我由于刚接触ORACLE不久,百思不得其解,希望各位达人能够解答,并给我这个慢慢对数据库技术开始感兴趣的新人一点发展的信心和建议
      

  2.   

    OPEN tnt_conpiece(strunit_no);
                 loop
                    FETCH tnt_unit                                              
                    INTO v_unit;                                            
                    EXIT WHEN tnt_unit%NOTFOUND; 
                 PK_ADDHIST.SP_CONPICSTATHIST(                                   
                         v_conpiece.Consignment_no,                                  
                         v_conpiece.Piece_no,                                        
                         strSeq,                                                         
                         strdepotid,                                                     
                         'COMM',                                                         
                          null,                                                           
                         '解包: Unit_Ref:'|| v_unit.Unit_Ref,                     
                         struserid                                                       
                        );                                                              
                   end loop;   
                   -----------------------------------------------------------------------------
                --根据strUnit_no--的一条记录更新TB_CON_PIECE表
                UPDATE tb_con_piece
                   SET unit_no = NULL, current_depot_id = strdepotid
                 WHERE unit_no = strunit_no;   
                 ----------------------
                 CLOSE tnt_conpiece;   
                 ----------------------