将日期添加到绑定变量日期字段

时间:2019-06-07 13:41:45

标签: oracle oracleforms oraclereports ora-00932

我们正在使用oracle 12c表单和报表。在其中一个查询中,用户将通过表单输入日期,下面提到的查询将获取所需的数据。

get_stylesheet_directory_uri

我需要的是从上述查询中提取的数据将在用户输入的日期之前。我想在用户输入的日期中添加10天,并根据该日期填充记录。

我这样修改了上面的查询

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'

出现此错误

  

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

如何修改此查询

1 个答案:

答案 0 :(得分:1)

“ 2019年5月10日”不是日期,而是文本字符串。在第一种情况下,Oracle足够聪明,可以将文本字符串转换为日期。在第一种情况下,Oracle能够执行转换,但在第二种情况下,它会感到困惑。

我建议将您的代码更改为

SELECT COUNT(*)
 FROM T_APPLICATION_HDR,T_APPLN_PENSIONER
 WHERE APPLN_PK=APEN_APPLN_PK
 AND APPLN_DATE <= TO_DATE(:APPLN_DATE, 'DD-MON-YYYY') + INTERVAL '10' DAY
 AND APPLN_SECN_ID ='PV1'
 AND APPLN_STAT='04'