UPDATE W_AR_XACT_F F
   SET F.COST_CENTER_WID = tb.ROW_WID
   FROM 
       (SELECT D.ROW_WID, FS.INTEGRATION_ID
        FROM W_AR_XACT_FS FS, W_COST_CENTER_D D
       WHERE D.INTEGRATION_ID =FS.COST_CENTER_ID) tb
   WHERE F.DATASOURCE_NUM_ID = 32
   AND F.INTEGRATION_ID = tb.INTEGRATION_ID;
这是我的语句,怎么提醒00933. 00000 -  "SQL command not properly ended"错误,谢谢帮忙了

解决方案 »

  1.   

    UPDATE W_AR_XACT_F F
       SET F.COST_CENTER_WID = select  tb.ROW_WID FROM (SELECT D.ROW_WID,
                                                       FS.INTEGRATION_ID
                                                  FROM W_AR_XACT_FS    FS,
                                                       W_COST_CENTER_D D
                                                 WHERE D.INTEGRATION_ID =
                                                       FS.COST_CENTER_ID) tb
     WHERE F.DATASOURCE_NUM_ID = 32
       AND F.INTEGRATION_ID = tb.INTEGRATION_ID;
      

  2.   


    你这样是错的,提示说select那里缺少表达式
      

  3.   

     UPDATE   F
      SET F.COST_CENTER_WID = tb.ROW_WID
      FROM  
      (SELECT D.ROW_WID, FS.INTEGRATION_ID
      FROM W_AR_XACT_FS FS, W_COST_CENTER_D D
      WHERE D.INTEGRATION_ID =FS.COST_CENTER_ID) tb, W_AR_XACT_F F
      WHERE    F.INTEGRATION_ID = tb.INTEGRATION_ID
      and F.DATASOURCE_NUM_ID = 32; 
      

  4.   

    oracel 能用这样两表联连更新的方式吗?这记得这种是不可以的,SQL SERVER中,一般批量更新我们都是使用游标更新
      

  5.   

    update 没有from 的语句吧。update w_ar_xact_f f
           set f.cost_center_wid = (
           
               select d.row_wid from (
               select  d.row_wid,fs.integration_id
               from w_cost_center_d d,
               w_ar_xact_fs fs
               where d.integration_id = fs.cost_center_id) tb
               where f.datasource_num_id = 32
               and f.integration_id = tb.integration_id
           )
      

  6.   


    UPDATE (SELECT /*+ BYPASS_UJVC */ F.COST_CENTER_WID, tb.ROW_WID
       FROM  (SELECT D.ROW_WID, FS.INTEGRATION_ID
       FROM W_AR_XACT_FS FS, W_COST_CENTER_D D
       WHERE D.INTEGRATION_ID =FS.COST_CENTER_ID) tb,
       W_AR_XACT_F F
       WHERE F.DATASOURCE_NUM_ID = 32
       AND F.INTEGRATION_ID = tb.INTEGRATION_ID)
    SET COST_CENTER_WID = ROW_WID
      

  7.   

    UPDATE W_AR_XACT_F F
       SET F.COST_CENTER_WID =
           (SELECT D.ROW_WID
              FROM W_AR_XACT_FS FS, W_COST_CENTER_D D
             WHERE D.INTEGRATION_ID = FS.COST_CENTER_ID
               and FS.INTEGRATION_ID = F.INTEGRATION_ID)
     WHERE F.DATASOURCE_NUM_ID = 32;
      

  8.   

    UPDATE W_AR_XACT_F F
      SET F.COST_CENTER_WID = (select tb.ROW_WID
      FROM  
      (SELECT D.ROW_WID, FS.INTEGRATION_ID
      FROM W_AR_XACT_FS FS, W_COST_CENTER_D D
      WHERE D.INTEGRATION_ID =FS.COST_CENTER_ID) tb where F.DATASOURCE_NUM_ID = 32
      AND F.INTEGRATION_ID = tb.INTEGRATION_ID )
      WHERE F.DATASOURCE_NUM_ID = 32
      AND F.INTEGRATION_ID = (select tb.INTEGRATION_ID
      FROM  
      (SELECT D.ROW_WID, FS.INTEGRATION_ID
      FROM W_AR_XACT_FS FS, W_COST_CENTER_D D
      WHERE D.INTEGRATION_ID =FS.COST_CENTER_ID) tb where F.DATASOURCE_NUM_ID = 32
      AND F.INTEGRATION_ID = tb.INTEGRATION_ID );