0

我有 3 张桌子

FLUX_ISU_FORMULE

ID  NUMBER(38,0)
CPT_CODE    VARCHAR2(10 BYTE)
TYPE_ENERGIE    VARCHAR2(12 BYTE)
DATE_MODIFICATION   DATE

FLUX_ISU_FORMULE_CL

ID  NUMBER(38,0)
FRM_ID  NUMBER(38,0) -- FLUX_ISU_FORMULE ID
DATE_DEBUT  DATE
DATE_FIN    DATE

FLUX_ISU_FORMULE_TAB_EQU

ID  NUMBER(38,0)
FRM_ID  NUMBER(38,0) -- FLUX_ISU_FORMULE ID
FCL_ID  NUMBER(38,0) -- FLUX_ISU_FORMULE_CL ID
CADRAN  NUMBER(38,0)
EQU_CODE    NUMBER(38,0)
COEFFICIENT NUMBER(38,0)

我必须根据其管理规则从我的表中删除数据:

CADRAN ═ 1 或 4(其他表已删除,无错误消息)。TYPE_ENERGIE 以“EA”开头(EA应该接受大小写),其他类型的能量不集成(其他都是删除表,没有错误信息)。

我这样做

DELETE
FROM FLUX_ISU_FORMULE
INNER JOIN FLUX_ISU_FORMULE_CL
ON FLUX_ISU_FORMULE.ID = FLUX_ISU_FORMULE_CL.FRM_ID
INNER JOIN FLUX_ISU_FORMULE_TAB_EQU
ON FLUX_ISU_FORMULE_CL.FRM_ID = FLUX_ISU_FORMULE_TAB_EQU.FRM_ID
AND FLUX_ISU_FORMULE_CL.ID    = FLUX_ISU_FORMULE_TAB_EQU.FCL_ID
WHERE lower(FLUX_ISU_FORMULE.type_energie) NOT LIKE 'ea%'
AND (FLUX_ISU_FORMULE_TAB_EQU.CADRAN <> 1 AND FLUX_ISU_FORMULE_TAB_EQU.CADRAN  <> 4);

我有这个错误:

Erreur à la ligne de commande : 2, Colonne : 21 Rapport d'erreur : Erreur SQL : ORA-00933: la commande SQL ne se termine pas Correctement 00933. 00000 - “SQL 命令未正确结束” *原因:
*操作:

4

2 回答 2

3

Oracle 不支持手册中明确记录的 DELETE 语句的 JOIN。

您需要使用共同相关的子选择来重写它。

于 2012-07-13T09:22:29.040 回答
1
DELETE FROM FLUX_ISU_FORMULE  WHERE
(FLUX_ISU_FORMULE.ID) IN
(SELECT FLUX_ISU_FORMULE.ID
FROM FLUX_ISU_FORMULE
INNER JOIN FLUX_ISU_FORMULE_CL
ON FLUX_ISU_FORMULE.ID = FLUX_ISU_FORMULE_CL.FRM_ID
INNER JOIN FLUX_ISU_FORMULE_TAB_EQU
ON FLUX_ISU_FORMULE_CL.FRM_ID = FLUX_ISU_FORMULE_TAB_EQU.FRM_ID
AND FLUX_ISU_FORMULE_CL.ID    = FLUX_ISU_FORMULE_TAB_EQU.FCL_ID
WHERE lower(FLUX_ISU_FORMULE.type_energie) NOT LIKE 'ea%'
AND (FLUX_ISU_FORMULE_TAB_EQU.CADRAN <> 1 AND FLUX_ISU_FORMULE_TAB_EQU.CADRAN  <> 4));
COMMIT;
于 2012-07-13T09:48:50.800 回答