【发布时间】:2019-06-07 13:41:45
【问题描述】:
我们正在使用 oracle 12c 表单和报告。在其中一个查询中,用户将通过表单输入日期,下面提到的查询将获取所需的数据。
SELECT COUNT(*)
FROM T_APPLICATION_HDR,T_APPLN_PENSIONER
WHERE APPLN_PK=APEN_APPLN_PK
AND APPLN_DATE <=:APPLN_DATE
AND APPLN_SECN_ID ='PV1'
AND APPLN_STAT='04'
我需要的是从上面的查询中获取的数据将在用户输入的日期之前。我想将用户输入的日期和基于该日期填充的记录添加 10 天。
我像这样修改了上面的查询
SELECT COUNT(*)
FROM T_APPLICATION_HDR,T_APPLN_PENSIONER
WHERE APPLN_PK=APEN_APPLN_PK
AND APPLN_DATE <=:APPLN_DATE+10
AND APPLN_SECN_ID ='PV1'
AND APPLN_STAT='04'
它给出了这个错误
ORA-00932: inconsistent datatypes: expected DATE got NUMBER.
如何修改这个查询
我像这样修改了上面的查询
SELECT COUNT(*)
FROM T_APPLICATION_HDR,T_APPLN_PENSIONER
WHERE APPLN_PK=APEN_APPLN_PK
AND APPLN_DATE <=:APPLN_DATE+10
AND APPLN_SECN_ID ='PV1'
AND APPLN_STAT='04'
例如,如果输入的appln_date 是10-may-2019,那么查询应该获取20-may-2019 之前的记录。
它给出了这个错误
ORA-00932: inconsistent datatypes: expected DATE got NUMBER.
如何修改这个查询
【问题讨论】:
-
您修改查询的方式是正确的。其他原因导致此错误。有两件事要检查(并在检查后与我们分享):(1)表中
APPLN_DATE列的数据类型。 (几乎可以肯定date,否则即使在修改之前你也会得到同样的错误,但最好检查一下。) (2) 由应用程序创建并分配给查询中绑定变量的变量的数据类型。不知何故,这似乎被查询解析器视为number。 -
01) APPLN_DATE 列的数据类型是日期 02) 分配给绑定变量的变量的数据类型是数字
标签: oracle oracleforms oraclereports ora-00932