【问题标题】:Bind Dates in SQL Tuning advisorSQL 调优顾问中的绑定日期
【发布时间】:2018-08-23 14:32:11
【问题描述】:

我正在尝试使用 Oracle SQL Developers SQL Tuning advisor 将日期绑定到变量,但它会将其识别为 VARCHAR2 而不是 DATE。有没有办法指定你绑定的参数的数据类型?

SQL:

SELECT * FROM Actv
WHERE ActvId = :in_UserGrpCds AND ActvTime >= :in_FromDate AND ActvTime < :in_ThruDate
OFFSET :in_CurrRecordOffset FETCH NEXT :in_NextRecordOffset ROWS ONLY;

in_ThruDate 绑定为VARCHAR2,它无法运行。

Bind Variables :
 1 -  (NUMBER):1091
 2 -  (NUMBER):0
 3 -  (VARCHAR2):07-21-2018
 4 -  (NUMBER):50000
 5 -  (VARCHAR2):08-21-2018

-------------------------------------------------------------------------------
ERRORS SECTION
-------------------------------------------------------------------------------
- ORA-00932: inconsistent datatypes: expected DATE got NUMBER

-------------------------------------------------------------------------------

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper sql-tuning


    【解决方案1】:

    我们只绑定字符串/数字/空值,因此请调整您的 SQL 以包含 to_date:

    SELECT * FROM Actv
    WHERE ActvId = :in_UserGrpCds 
    AND ActvTime >= to_date(:in_FromDate ,'MM-DD-YYYY')
    AND ActvTime < to_date(:in_ThruDate ,'MM-DD-YYYY')
    OFFSET :in_CurrRecordOffset FETCH NEXT :in_NextRecordOffset ROWS ONLY;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2017-06-07
      相关资源
      最近更新 更多