ORA-00933:SQL命令未正确结束--我缺少什么?
ORA-00933:SQL命令未正确结束--我缺少什么?
这个问题已经在以下网址有答案:
相当简单的更新... 或者我是这样认为的。下面的查询导致了错误:ORA-00933:SQL命令未正确结束。
我少了什么?
运行Oracle 12c
查询:
UPDATE P SET P.SERVICE_DATE_OUT = NULL, P.SERVICE_DATE_IN = NULL FROM PMEQMT P JOIN ARINVT A ON A.ITEMNO = P.EQNO JOIN FGMULTI F ON F.ARINVT_ID = A.ID WHERE P.SERVICE_DATE_OUT IS NOT NULL AND P.SERVICE_DATE_IN IS NOT NULL AND P.CLASS = 'TL' AND F.LOC_ID = 27354
admin 更改状态以发布 2023年5月21日
此外(相对于Lukasz的代码),看看这样的代码是否有帮助:
[编辑]
你说该查询返回相同的错误。嗯,对我来说不是这样。
我创建了示例表(只包含必要的列),运行了查询,就从语法上讲是正确的。
SQL> create table pmeqmt (service_date_out date, service_date_in date, eqno number, class varchar2(2)); Table created. SQL> create table arinvt (id number, itemno number); Table created. SQL> create table fgmulti (arinvt_id number, loc_id number); Table created. SQL> SQL> update pmeqmt p set 2 p.service_date_out = null, 3 p.service_date_in = null 4 where p.eqno in (select a.itemno 5 from arinvt a join fgmulti f on f.arinvt_id = a.id 6 where f.loc_id = 27354 7 ) 8 and p.service_date_out is not null 9 and p.service_date_in is not null 10 and p.class = 'TL'; 0 rows updated. SQL>
你可以用内联视图重写它:
UPDATE ( SELECT P.SERVICE_DATE_OUT, P.SERVICE_DATE_IN FROM PMEQMT P JOIN ARINVT A ON A.ITEMNO = P.EQNO JOIN FGMULTI F ON F.ARINVT_ID = A.ID WHERE P.SERVICE_DATE_OUT IS NOT NULL AND P.SERVICE_DATE_IN IS NOT NULL AND P.CLASS = 'TL' AND F.LOC_ID = 27354 ) s SET s.SERVICE_DATE_OUT = NULL, s.SERVICE_DATE_IN = NULL;
Oracle 不支持 UPDATE FROM JOIN
语法。