sqlserver 转Oracle的项目语法不熟请大家帮帮忙。
UPDATE CSEMPL_11 SET EVALUE=DNSLAY FROM HRLIST_1 
WHERE CSEMPL_11.ITEMCODE=HRLIST_1.ITEMCODE AND 
CSEMPL_11.VGUID=HRLIST_1.EGUID AND 
TODODT BETWEEN DATEADD(M,-1,@PEND) AND DATEADD(D,-1,@PEND) AND HRARES='501';存储过程里的一句变量直接代入就好了。谢谢

解决方案 »

  1.   

    oracle中没有BETWEEN and,你改用>或<就可以了,其他没有什么问题
      

  2.   

    要用EXISTS写法:
    update customers a -- 使用别名
    set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)
    where exists (select 1
    from tmp_cust_city b
    where b.customer_id=a.customer_id
    )http://www.cnblogs.com/super-yc/archive/2007/06/11/779176.html
      

  3.   


    UPDATE CSEMPL_11 a 
    SET EVALUE=(Select DNSLAY FROM HRLIST_1 b WHERE a.ITEMCODE=b.ITEMCODE AND a.VGUID=b.EGUID)
    WHERE TODODT > add_months(@PEND,-1) AND TODODT < @PEND-1 AND HRARES='501'; 注意,ORACLE里的参数是没@的,你把对应的参数名替换@PEND就行了
    不过,我这里是猜你要把表CSEMPL_11里符合条件的记录的EVALUE更新表HRLIST_1里对应的DNSLAY,不知道是不是这样呢?