当where子句

时间:2019-03-21 15:16:38

标签: sql oracle plsql

我刚刚从SQL Server切换到Oracle,当使用基于SQL查询的结果未设置其值的变量时,我对如何获取结果感到困惑。这到底是怎么了?

variable firstDate date; 
variable secondDate date;
exec firstDate := '03/01/2019';
exec secondDate := '03/31/2019';

select 
   c.xent_id  
FROM 
   lic c 
WHERE 
   C.EXPR_DTE >= TO_DATE(firstDate,'MM/DD/YYYY') 
   AND C.EXPR_DTE <= TO_DATE(secondDate,'MM/DD/YYYY') 
   AND c.clnt_cde = 8801

1 个答案:

答案 0 :(得分:1)

您不能在SQL * Plus / SQL开发人员中定义DATE绑定变量。它可能定义为VARCHAR2并分配了一个字符串,并在需要时进行了转换。另外,请注意,在绑定变量之前的适当位置缺少冒号。检查查询以查看其用法。您可以在实际查询的where子句中添加相同的表达式。

variable firstDate VARCHAR2; 
variable secondDate VARCHAR2;
exec :firstDate := '03/01/2019';
exec :secondDate := '03/31/2019';


select TO_DATE(:firstDate,'MM/DD/YYYY') dt1 , TO_DATE(:secondDate,'MM/DD/YYYY')
 as dt2 from dual;

DT1      DT2     
-------- --------
01-03-19 31-03-19