如何在sqlplus中声明一个日期变量作为绑定变量传递?

时间:2013-10-23 06:26:54

标签: sql oracle date sqlplus

我想在Sqlplus中将日期作为绑定变量传递。我使用了here提供的建议,但似乎声明绑定变量作为varchar2传递?

variable my_date varchar2(30)
exec :my_date := '2013-10-01';
select sysdate ,:my_date from dual where sysdate > to_date(:my_date,'yyyy-mm-dd');

 select sql_text, v.sql_id, name, value_string, datatype_string
  from v$sql_bind_capture vbc
  join v$sql v
 using (hash_value)
 where v.sql_id in ('8c5xc95vxc7yr', '6vn08798ax8bw', '61g3km3x621wt');


    SQL_TEXT    SQL_ID  NAME    VALUE_STRING    DATATYPE_STRING
select sysdate ,:my_date from dual where sysdate > to_date(:my_date,:"SYS_B_0") 6vn08798ax8bw   :MY_DATE        VARCHAR2(32)
select sysdate ,:my_date from dual where sysdate > to_date(:my_date,:"SYS_B_0") 6vn08798ax8bw   :MY_DATE        VARCHAR2(32)
select sysdate ,:my_date from dual where sysdate > to_date(:my_date,:"SYS_B_0") 6vn08798ax8bw   :SYS_B_0    yyyy-mm-dd  VARCHAR2(32)

如何在Sqlplus中将日期变量作为绑定参数传递?

更新 我写了pl / sql代码块来传递日期变量作为绑定变量。绑定变量类型会影响执行计划吗?

1 个答案:

答案 0 :(得分:3)

作为documented,您无法在SQL * Plus中定义日期变量。

绑定变量确实在代码中作为Varchar2传递,这正是AskTom所说的。但是,显式日期转换方法将其转换为SQL引擎中的日期。