2012-02-07 3 views
2

Oracle 8iからOracle 11gに移行したばかりです。そうすることで、私たちはcurrent_timeという変数を持つ問題に遭遇しました。さまざまなプロシージャーや関数の変数と、いくつかの表の列名の両方として使用します。 「CURRENT_DATE」という言葉への参照は、私たちのprocviewでは数千に近いと思われます。アップグレードしたときに突然current_dateという用語を参照するたびに、新しい関数が変数と列名をオーバーライドしていました。私の質問は、オラクルが定義した関数への参照をどのように無効にすることができるのかです。Oracleのcurrent_timeを無効にする

答えて

1

列名を修飾する必要があります。それ以外の場合は、Oracleのスコープ解決ルールによって列上の関数が選択されます

SQL> create table foo(current_date date); 

Table created. 

SQL> insert into foo values(date '2011-01-01'); 

1 row created. 

SQL> select current_date from foo; 

CURRENT_D 
--------- 
07-FEB-12 

SQL> select f.current_date from foo f; 

CURRENT_D 
--------- 
01-JAN-11 
+0

私はそれを恐れていました。関数current_dateが以前に存在しなかったため、これは必ずしも前のやり方ではありませんでした。私が行かなければならないと私は手動で困難な方法を手動で修正する必要があります。 – Tidmore

関連する問題