5

我有一个这样的sql

UPDATE A
SET A.TEMSILCI_KOD = 4
FROM S_MUSTERI A, S_TEKLIF B
WHERE A.TEMSILCI_KOD = 9
AND B.BAYI_KOD = 17
AND A.HESAP_NO = B.HESAP_NO

但我收到这样的错误

Error starting at line 8 in command:
UPDATE A
SET A.TEMSILCI_KOD = 4
FROM S_MUSTERI A, S_TEKLIF B
WHERE A.TEMSILCI_KOD = 9
AND B.BAYI_KOD = 17
AND A.HESAP_NO = B.HESAP_NO
Error at Command Line:9 Column:22
Error report:
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:

在哪里ERROR

4

3 回答 3

11

也许像

UPDATE S_MUSTERI
SET TEMSILCI_KOD = 4
WHERE TEMSILCI_KOD = 9
AND EXISTS (SELECT 1 FROM S_TEKLIF B
WHERE S_MUSTERI.HESAP_NO = B.HESAP_NO
AND B.BAYI_KOD = 17)
于 2011-02-08T15:10:17.097 回答
4

在 Oracle 中,更新视图的语法与 SQL*Server 的语法不同。在 Oracle 中,您可以发出以下查询:

UPDATE (SELECT A.TEMSILCI_KOD
          FROM S_MUSTERI A, S_TEKLIF B
         WHERE A.TEMSILCI_KOD = 9
           AND B.BAYI_KOD = 17
           AND A.HESAP_NO = B.HESAP_NO)
   SET TEMSILCI_KOD = 4

注意:此查询仅在唯一的情况下才可在 Oracle中使用(S_TEKLIF.BAYI_KOD, S_TEKLIF.HESAP_NO)(这样更新就不会模棱两可,并且来自的每一行S_MUSTERI最多更新一次)。

于 2011-02-08T15:33:43.343 回答
2

您的更新语句不遵循正确的语法。update 语句中没有 from 子句。它应该遵循格式

Update <table> 
   set <column> = <value> 
 where <conditions>

请参阅有关更新的文档:http: //download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_10007.htm#i2067715

于 2011-02-08T15:06:48.803 回答