使用项目中的新值到我的 sql 语句而不将该值保存到数据库

Using a new value from an item to my sql statement without saving this value to database

我正在尝试比较我刚刚在我的项目中输入的日期值(:P2007_Session_Date - 它是一个日期选择器 -)与我的 table 中的日期值。这个新值还没有保存在我的数据库中。 我怎样才能做到这一点? 我正在尝试使用 DA 但没有任何反应

时间:

事件:更改,项目:P2007_Session_date

真实操作集值:

SQL 声明

SELECT POLICIES.PRICE 从政策 其中 POLICIES.ACTIVE = 1 和 to_char(**:P2007_Session_Date**, 'YYYY-MM-DD') 在 to_char(POLICIES.START_DATE, 'YYYY-MM-DD') 和 to_char( POLICIES.END_DATE, 'YYYY-MM-DD');

提交项目

:P2007_Session_Date, :P2007_Price

受影响的元素

:P2007_Price

这给了我这个错误 Ajax 调用返回服务器错误 ORA-01722:不接受 table 设置值的数字。 但是当我将查询从 to_char(:P2007_Session_Date, 'YYYY-MM-DD') 更改为 to_char(sysdate, 'YYYY-MM-DD') 时,它起作用了! 问题是我想检查的不是 sysdate,而是用户刚刚输入到 :P2007_Session_Date 项目的值,它尚未存储在数据库中。

顶点项是字符串,无论它们代表什么数据类型。因此,如果页面项目中有日期值,则必须将其转换为 pl/sql 中的日期。 TO_CHAR(:P2007_SESSION_DATE, 'YYYY-MM-DD') 语句不正确,它期望绑定变量 :P2007_SESSION_DATE 的数据类型为 DATE 或 TIMESTAMP,但由于这是一个顶点项,它只是一个字符串。

最简洁的解决方案是只进行日期比较,而不是字符比较(这对您的情况有效)。

试试这个语句:

SELECT
  policies.price
  FROM
  policies
 WHERE
  policies.active = 1 AND
  TO_DATE (:P2007_SESSION_DATE,'YYYY-MM-DD' ) BETWEEN policies.start_date AND policies.end_date