sql server:
TTG_SVCPrice是标准价格,同一产品不同的省份不同的价格
TTQ_StandardSVC 是每一个单子的记录,价格从标准价格那边读进来,单子的省份变了,则要从标准价格那边重新更新价格写入TTQ_StandardSVC update TTQ_StandardSVC set unitprice=price*@Rate from TTG_SVCPrice 
where TTQ_StandardSVC.popno=@POPNo
and TTQ_StandardSVC.svcid=TTG_SVCPrice.svcid 
and TTG_SVCPrice.provinceid=@ProvinceID转成oracle:
我这样写总感觉不对啊update TTQ_StandardSVC set unitprice=p_Rate*(select price from TTG_SVCPrice where popno=p_POPNo and TTQ_StandardSVC.svcid=TTG_SVCPrice.svcid and TTG_SVCPrice.provinceid=p_ProvinceID ) 
     where TTQ_StandardSVC.popno=p_POPNo;

解决方案 »

  1.   

    TTG_SVCPrice应该有主键吧。如果有,可以这样写
    update (select s.unitprice, p.price from TTG_SVCPrice p, TTQ_StandardSVC s
                where p.provinceid=v_ProvinceID and s.popno=p_POPNo
                  and s.svcid=p.svcid)
        set unitprice=price*v_Rate;
      

  2.   

    update TTQ_StandardSVC set unitprice=price*@Rate from TTG_SVCPrice 
    where TTQ_StandardSVC.popno=@POPNo
    and TTQ_StandardSVC.svcid=TTG_SVCPrice.svcid 
    and TTG_SVCPrice.provinceid=@ProvinceID
    oracle不支持此种语句更新操作。。可以用子查询进行更新操作。。
    有时候感觉比较晕