-2

我可以在删除中使用 select 两次吗,因为我的要求要求这样做,但是在 db 中尝试时出现 ORA-00936“缺少表达式”错误。

DELETE FROM GLTB_REIM_DETAILS_TABLE_MAP WHERE
SELECT REPORT_NAME_C
FROM PRTB_REIM_REPORT_MAP, prtb_pay_remb_claims
WHERE (SELECT PAY_ELEMENT_CODE_C
  FROM PRTB_PAY_REMB_CLAIMS
  WHERE voucher_no_n='W288'
  AND emp_id_c      ='78881');

帮忙解决这个问题!!!

4

3 回答 3

1

'Where' 条件似乎不完整。请检查一次。您需要将其与一些参数等同起来。检查语法。

于 2013-10-05T08:51:33.317 回答
0

尝试

DELETE FROM GLTB_REIM_DETAILS_TABLE_MAP A
 WHERE A.TABLEFIELD in (SELECT REPORT_NAME_C
    FROM PRTB_REIM_REPORT_MAP B, prtb_pay_remb_claims C
   WHERE B.TABLEFIELD in (SELECT PAY_ELEMENT_CODE_C
      FROM PRTB_PAY_REMB_CLAIMS
     WHERE voucher_no_n = 'W288'
       AND emp_id_c = '78881'));
于 2013-10-05T08:44:23.333 回答
0

我认为您缺少表 PRTB_REIM_REPORT_MAP 和 prtb_pay_remb_claims 之间的一些连接。我应该看到表格声明更有帮助。但是删除语句应该是这样的:

DELETE FROM GLTB_REIM_DETAILS_TABLE_MAP A
WHERE EXISTS (SELECT REPORT_NAME_C
   FROM PRTB_REIM_REPORT_MAP, prtb_pay_remb_claims
   WHERE EXISTS (SELECT *
      FROM PRTB_PAY_REMB_CLAIMS
      WHERE voucher_no_n = 'W288'
      AND emp_id_c = '78881'));
于 2013-10-05T08:54:48.510 回答