sqlserver中sql语法是这样的啊.怎么在oracle中就报错呢,应该怎么写?update PRT_ECUSERS_TMP set PRT_ECUSERS_TMP.state=3 from PRT_ECUSERS_TMP inner join PRT_ECUSERS on prt_ECUSER.msisdn = PRT_ECUSERS_TMP.msisdn and PRT_ECUSER.servicecode = PRT_ECUSERS_TMP.servicecode where PRT_ECUSER.startdate < PRT_ECUSER.enddate and PRT_ECUSER.enddate >= PRT_ECUSERS_TMP.startdate and PRT_ECUSERS_TMP.state='1'报?这里错误 state=3 ?from
ERROR 位于第 1 行:
ORA-00933: SQL 命令未正确结束

解决方案 »

  1.   

    oracle 是不是不支持这样写法啊.
      

  2.   

    是不是改成这样就行了,不过这样用in好象很慢啊.update PRT_ECUSERS_TMP set PRT_ECUSERS_TMP.state=3 where msisdn in (select prt_eCUSERS.msisdn from PRT_ECUSER where PRT_ECUSER.servicecode = PRT_ECUSERS_TMP.servicecode) and PRT_ECUSER.startdate < PRT_ECUSER.enddate and PRT_ECUSER.enddate >= PRT_ECUSERS_TMP.startdate and PRT_ECUSERS_TMP.state='1'
      

  3.   

    update PRT_ECUSERS_TMP
              set PRT_ECUSERS_TMP.state = 3
            where msisdn in
                  (select prt_eCUSERS.msisdn
                     from PRT_ECUSER, PRT_ECUSERS_TMP
                    where PRT_ECUSER.servicecode = PRT_ECUSERS_TMP.servicecode and
                          PRT_ECUSER.startdate < PRT_ECUSER.enddate and
                          PRT_ECUSER.enddate >= PRT_ECUSERS_TMP.startdate and
                          PRT_ECUSERS_TMP.state = '1')
      

  4.   

    那这个
    update PRT_ECUSERS_TMP set PRT_ECUSERS_TMP.state=3 from PRT_ECUSERS_TMP inner join PRT_ECUSERS on prt_ECUSER.msisdn = PRT_ECUSERS_TMP.msisdn and PRT_ECUSER.servicecode = PRT_ECUSERS_TMP.servicecode where PRT_ECUSER.startdate < PRT_ECUSER.enddate and PRT_ECUSER.enddate >= PRT_ECUSERS_TMP.startdate and PRT_ECUSERS_TMP.state='1'在sqlserver里就能用啊.在oracle里如果不用in,应该怎么写啊
      

  5.   

    知道了,oracle不支持那种写法,不过还是谢谢LinZhongBao(林)