SQL命令未以DELETE transsaction正确结束

SQL命令未以DELETE transsaction正确结束,sql,oracle,stored-procedures,sql-delete,Sql,Oracle,Stored Procedures,Sql Delete,我有三张桌子 通量公式 焊剂配方 焊剂配方标签等 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) 我必须根据表的管理规则从表中删除数据: 卡德兰═ 1或4其他表被删除,没有错误消息。 类型

我有三张桌子

通量公式

焊剂配方

焊剂配方标签等

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)
我必须根据表的管理规则从表中删除数据:

卡德兰═ 1或4其他表被删除,没有错误消息。 类型_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);
我有一个错误:

命令的一致性:2,科隆:21 错误SQL:ORA-00933:la命令SQL ne se termine pas纠正 93300000-SQL命令未正确结束 *原因: *行动:


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


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

Oracle不支持DELETE语句的JOIN,该语句在手册中有明确的说明

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;

您需要使用相关的子选项重写它。

好的,如何使用查询生成器生成删除语句?@Mercer:我不知道查询生成器是什么。你应该在论坛上向该生成器询问如何告诉它生成有效的Oracle语法。好的,如何使用查询生成器生成删除语句?@Mercer:我不知道该查询生成器是什么。您应该在论坛中询问构建器如何告诉它生成有效的Oracle语法。
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;
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;