*
*
*
DECLARE CURSOR get_baseinfo IS   
   SELECT ***************--游标   
   begin        
      for cr in get_baseinfo loop
          check_id_detail:= cr.check_id_detail;--系统索引
       *
       *
          
      road_wastage:=-(weight_waste/balance_weight)*(contract_price+qnetar_price+s_price+v_price+de_fare);
      
      UPDATE hndl.T_RL_STRAP_TRUCK set MINE_LOSS_PRICE2=-(weight_waste/balance_weight)*(contract_price+qnetar_price+s_price+v_price+de_fare) where MAIN_KEY=strap_main_key and check_id_detail=check_id_detail;----UPDATE字段中为表达式则可以循环得到正确的不重复的值 
      end loop;
   end;
*
*
*问题:当把UPDATE语句中的表达式即road_wastage代替为字段名时却得到重复的值,这种情况该如何处理呢小弟初学,多多指教!

解决方案 »

  1.   

    单看这段..没问题..最好把      road_wastage:=-(weight_waste/balance_weight)*(contract_price+qnetar_price+s_price+v_price+de_fare);的上下语句都粘出来....你的这个赋值语句是不是有条件啊..
      

  2.   

    重复值问题一般都是where条件缺少造成的
      

  3.   

    与WHERE 条件无关
    就是换成字段就不可以,直接表达式就行
      

  4.   

    你什么时给  road_wastage赋值的.........把赋值时的上下文都拿出来...
    单纯从你粘上来的看....什么问题都没有
      

  5.   

    create or replace procedure hndl.PROC_RL_COAL_PREBALANCE
    (
         balance_code in varchar2--传入化验单编号

    AS
         iFare  integer;--统计费用标志
         iPrice  integer;--价格标志
         fLoss_price  integer;--途耗价格标志
         price_withtax integer;--结算含税车板价标志
         assay_main_key varchar2(16);--化验主键
         strap_main_key varchar2(16);--检斤主键
         check_id_detail int;--检斤索引
         balance_weight number(16,4);--结算重量
         weight_lost number(16,4);--盈亏
         weight_good number(16,4);--票重
         weight_waste number(16,4);--运输损耗 
         iscontract_price varchar(16);--是否合同价格
         contract_price number(16,4);--合同价格
         icontract_code varchar2(16); --合同编号 
         provide_code varchar2(16);--供煤单位代码
         begin_prot_code varchar(16);--发站代码
         consign_price number(16,4);--委托代理费用
         else_price number(16,4);--其他费用
      

  6.   

    consignment_model_code number(16,4);--交货方式
         
         sumbeginport varchar2(16);--费用信息表中的费用信息  
         weight number(16,4);--票重   
         vendor_code varchar2(16);--供煤单位代码
         station_code varchar2(16);--发站代码
         carry_money number(16,4);--每吨运费
         all_money_tax number(16,4);--总费用
         resist_withtax_money number(16,4);--运费可抵税
         
         sumnopro_code varchar2(16);--     
         iCompute_contract_price integer;--计算价格标志
         
         qnetar number(16,4);--低位发热量
         vdaf number(16,4);--挥发分
         stad number(16,4);--硫份
         mar number(16,4);--全水分
         
         imaxflag varchar2(16);--大于等于标志
         iminflag varchar2(16);--小于等于标志
         imax varchar2(16);--大于等于
         imin varchar2(16);--小于等于 
         expression varchar2(16);--公式 
         
         rezhi number(30,10);--换算后的热值 
         nocontract_price number(16,4);--不是合同价格的时候根据发热量求出的价格
         y boolean;
         qnetar_price number(16,4);--发热量扣价
         s_price number(16,4);--硫份扣价
         s_jug varchar(12);--判断是否有'-';
         v_price number(16,4);--挥发份扣价
      

  7.   

    你从begin.........后贴就好了吧..................
      

  8.   

    第一个帖子中where MAIN_KEY=strap_main_key and check_id_detail=check_id_detail;
    中and check_id_detail=check_id_detail是不正确的