SQL 优化顾问中的绑定日期
Bind Dates in SQL Tuning advisor
我正在尝试使用 Oracle SQL 开发人员 SQL 优化顾问将日期绑定到变量,但它会将其识别为 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
get 被绑定为 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
-------------------------------------------------------------------------------
我们只绑定 strings/numbers/nulls 所以调整你的 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;
我正在尝试使用 Oracle SQL 开发人员 SQL 优化顾问将日期绑定到变量,但它会将其识别为 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
get 被绑定为 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
-------------------------------------------------------------------------------
我们只绑定 strings/numbers/nulls 所以调整你的 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;