2

Sqlplusでバインド変数として日付を渡したいです。ここで提供されている提案を使用しましたが、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コードブロックを書きました。バインド変数の型は実行計画に影響しますか?

4

1 に答える 1

4

記載されているように、SQL*Plus では日付変数を定義できません。

バインド変数は、コード内で実際に Varchar2 として渡されます。これは、AskTom が言うこととまったく同じです。ただし、明示的な日付変換メソッドは、SQL エンジンで日付に変換します。

于 2013-10-23T07:39:38.673 に答える