質問

い高速右にある小さな矢印をクリックのためのかを判定する分野が存在しない表示します。

実際に私はこれを使って文

Select 1 
   from dual
   where exists (select 1 
                   from all_tab_columns 
                  where table_name = 'MYTABLE' 
                    and column_name = 'MYCOLUMN')

と思いがある必要がありますの道であるか否かを判定するためにカラムが存在しますので、ORACLE社

更新

私の最適化により大きなソフトウェアシステムと複数の通話をこのクエリができません修正のソースコード(のみの変更は可能でクエリに格納された外部ファイルです。

のテーブルall_tab_columnsは、百万円で記録しています。

役に立ちましたか?

解決

all_tab_columnsの主キーがそれほど速くなる(またはowner, table_name, column_nameを使用する)であろう特定の所有者を探しuser_tab_columnsされます。

他のヒント

私はこのAskTomの記事を読んでお勧めします。これはチェックする最速の方法は全くチェックしないことを説明します。

ます。http:// asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:698008000346356376する

Oracleデータ・ディクショナリの照会 - あなたの例では、実際にそうであるよう、おそらく最速の方法です。

データ・ディクショナリは、メモリにキャッシュされており、かなり迅速にクエリを満たすことができるはずです。あなたがテーブルの実際のスキーマ所有者を知っている場合は、わずかに速い結果を得ることができるかもしれ - あなたはすべてのスキーマに対して検索のコストが発生しないように、

このクエリは:

 SELECT null
  FROM user_tab_columns
 WHERE table_name = 'MYTABLE' and column_name = 'MYCOLUMN'

の最速の方法はクエリから直接内部テーブル ではない方におすすめ および必要な助成金の上sysオブジェクト

select null
from sys.col$ c
   , sys.obj$ o
   , sys.obj$ ot
where o.name = 'MYTABLE'
  and c.name = 'MYCOLUMN'
  and o.obj# = c.obj#
  and o.owner# = userenv('SCHEMAID')
  and ot.type#(+) = 13
  and (o.type# in (3, 4)                                    
       or
       (o.type# = 2 
        and
        not exists (select null
                      from sys.tab$ t
                     where t.obj# = o.obj#
                       and (bitand(t.property, 512) = 512 or
                            bitand(t.property, 8192) = 8192))))

このクエリから USER_TAB_COLUMNS の定義および 変更することができ様々なリリース(10gR2私の場合).このクエリは私の参照情報を求めなかったです。

とにかく、なぜでチェックしたい。

このSQLクエリは、ユーザーのすべての表持つ列「NAVIGATION_ID」の名前を与える「DSGIDEV」

を選択* all_tab_colsどこからCOLUMN_NAME = 'NAVIGATION_ID' と所有者= 'DSGIDEV'

だから、あなたの所有者のID名で検索したい列と所有者で列名を変更します。

イージー、最速の方法は、ちょうどこのように関数を作成されます:

  Create function exist(v_table in varchar2, v_col in  varchar2) 
 Return integer is
 Res integer:= 0;
 Begin
   Begin
      Execute immediate 'select ' || v_col || ' from '|| v_table;         
      Res:=1;
      Exception when other then null;
   End;
Return (res);
End;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top