这种UPDATE SQL JOIN语法有什么问题?

时间:2019-08-06 08:01:40

标签: oracle plsql oracle-sqldeveloper

作为数据迁移的一部分,尝试根据另一个表中的值更新表中的列。所有列都存在于联接的两个表中,但是当我运行以下命令时,我收到了意外的错误消息:

UPDATE CSB 
SET  IFS10_SCHEDULE = CS.SCHEDULE_NO
FROM IC_U_CUSTOMER_SCHED_B CSB
JOIN CUST_SCHED CS
       ON     CSB.CUSTOMER_NO = CS.CUSTOMER_NO
          AND CS.SHIP_ADDR_NO = CSB.SHIP_ADDR_NO
          AND CSB.CUSTOMER_PART_NO = CS.CUSTOMER_PART_NO
          AND CSB.DOC_NO = CS.DOC_NO
          AND CSB.AGREEMENT_ID = CS.AGREEMENT_ID
          AND CSB.CUST_SCHEDULE_TYPE = CS.CUST_SCHEDULE_TYPE;

我收到错误:

Error at Command Line : 3 Column : 1
Error report -
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:

我确定这一定是语法问题,但看不到哪里。有什么想法吗?

编辑-谢谢,获得了解决方案。出于学习目的(在过去的20年中我已经做过T-SQL,仅学习PL-SQL),我也将查询重新编写为MERGE INTO,但这也失败了。这里有任何明显的问题吗?:

MERGE INTO IC_U_CUSTOMER_SCHED_B CSB
USING CUST_SCHED CS
ON (CSB.CUSTOMER_NO = CS.CUSTOMER_NO
          AND CS.SHIP_ADDR_NO = CSB.SHIP_ADDR_NO
          AND CSB.CUSTOMER_PART_NO = CS.CUSTOMER_PART_NO
          AND CSB.DOC_NO = CS.DOC_NO
          AND CSB.AGREEMENT_ID = CS.AGREEMENT_ID
          AND CSB.CUST_SCHEDULE_TYPE = CS.CUST_SCHEDULE_TYPE)
WHEN MATCHED THEN UPDATE SET CSB.IFS10_SCHEDULE = CS.SCHEDULE_NO
WHERE CSB.IFS10_SCHEDULE != CS.SCHEDULE_NO;

1 个答案:

答案 0 :(得分:1)

应该是

*** Protokolleintrag für Assembly-Binder  (06.08.2019 @ 09:14:03) ***

Fehler bei diesem Vorgang.
Ergebnis der Bindung: hr = 0x80070002. Das System kann die angegebene Datei nicht finden.

Der Assemblymanager wurde geladen aus:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Als EXE-Datei ausgeführt.  C:\Program Files (x86)\iSM\biCube\services\BiCube.Services.Host.exe
--- Ein detailliertes Fehlerprotokoll folgt. 

=== Zustandsinformationen vor Bindung ===
LOG: DisplayName = System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 (Fully-specified)
LOG: Appbase = file:///C:/Program Files (x86)/iSM/biCube/services/
LOG: Ursprünglicher PrivatePath = NULL
LOG: DynamicBase = NULL
LOG: CacheBase = NULL
LOG: AppName = BiCube.Services.Host.exe
Aufruf von Assembly : Microsoft.Graph.Core, Version=1.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: Diese Bindung startet im default-Load-Kontext.
LOG: Es wurde keine Anwendungskonfigurationsdatei gefunden.
LOG: Die Hostkonfigurationsdatei wird verwendet: 
LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config wird verwendet.
LOG: Verweis nach der Richtlinie: System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
LOG: Die Suche im GAC war nicht erfolgreich.
LOG: Download von neuem URL file:///C:/Program Files (x86)/iSM/biCube/services/System.ValueTuple.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/iSM/biCube/services/System.ValueTuple/System.ValueTuple.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/iSM/biCube/services/System.ValueTuple.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/iSM/biCube/services/System.ValueTuple/System.ValueTuple.EXE.
LOG: Fehler bei allen Such-URLs.