Oracle11g Oracle 11g ORA-01732关于删除查询

Oracle11g Oracle 11g ORA-01732关于删除查询,oracle11g,Oracle11g,我遇到了以下查询的问题。我发现了如何使查询工作,但我仍然想知道为什么这个ORA-01732。下面是给出错误的查询。CheckDate函数返回一个日期。如果我to_date或substring拒绝日期粗体则查询有效。如果我没有,我会得到错误ORA-01732:数据操纵操作在此视图上不合法。有人知道为什么它说我不能在没有视图的情况下更新视图,为什么仅仅通过将添加到日期或子字符串来修复错误吗 DELETE FROM INPUT_STAGING I WHERE ( I.STATUS_IND = 'N'

我遇到了以下查询的问题。我发现了如何使查询工作,但我仍然想知道为什么这个ORA-01732。下面是给出错误的查询。
CheckDate
函数返回一个日期。如果我
to_date
substring
拒绝日期
粗体
则查询有效。如果我没有,我会得到错误ORA-01732:数据操纵操作在此视图上不合法。有人知道为什么它说我不能在没有视图的情况下更新视图,为什么仅仅通过将
添加到日期
子字符串
来修复错误吗

DELETE FROM INPUT_STAGING I 
WHERE
( I.STATUS_IND = 'N'
AND (SUBSTR(I.PAYMENT_STATUS,1,1) = 'T'
    OR (NVL(TRIM(I.DENIAL_DT), '00000000') <> '00000000'
             AND codeowner.CheckDate(***I.DENIAL_DT***) < to_date('10/01/2014', 'MM/DD/YYYY')))
);
DELETE FROM INPUT\u STAGING I
哪里
(I.STATUS_IND='N'
和(SUBSTR(即付款状态,1,1)='T'
或(NVL(微调)(即“00000000”)“00000000”
和代码所有者。检查日期(***I.DT***)<截止日期('2014年1月10日','MM/DD/YYYY'))
);

什么数据类型是i.denial_dt?那是日期吗?还是一个
varchar2
?检查日期的签名是什么?该函数是否接受
varchar2
?或者一个
日期
?i.denial\u dt是一个varchar2。CheckDate函数接受nvarchar2。拒绝的格式是什么?CheckDate函数的定义是什么?我猜
拒绝\u dt
字符串的某些内容与抛出错误时所期望的格式不符。这是在
varchar2
列中存储日期值令人头痛的(许多)原因之一。什么是
i.dt
?那是日期吗?还是一个
varchar2
?检查日期的签名是什么?该函数是否接受
varchar2
?或者一个
日期
?i.denial\u dt是一个varchar2。CheckDate函数接受nvarchar2。拒绝的格式是什么?CheckDate函数的定义是什么?我猜
拒绝\u dt
字符串的某些内容与抛出错误时所期望的格式不符。这是在
varchar2
列中存储日期值令人头痛的(许多)原因之一。