• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:TIMESTAMP型が含まれるテーブルの列名の取得)

TIMESTAMP型が含まれるテーブルの列名の取得方法

このQ&Aのポイント
  • Oracle 11gを使用しているSQL初心者です。テーブルの列名を取得する方法についての質問です。
  • テーブルの列名を取得するときは以下のSQLで取れると思っています。しかし、テーブルにTIMESTAMP型が含まれていると「レコードが選択されませんでした。」と表示されます。
  • TIMESTAMP型が含まれるテーブルは上記のSQLでは取得できないのでしょうか。TIMESTAMP型が含まれるテーブルの列名の取得方法をご存知の方がいらっしゃいましたら、ご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 > TIMESTAMP型が含まれるテーブルは上記のSQLでは取得できないのでしょうか。 通常、そのような事はありません。 問題のテーブルにアクセスできるユーザからuser_tab_columns ビューを 参照している前提で、考えられる原因が3つあります。 1) 別スキーマにテーブルがある。   user_tab_columns ビューは、自スキーマに定義されているテーブルの   列情報を持ちます。   all_tab_columns ビューで情報が取得できるか確認して下さい。   ※ all_tab_columns ビューのowner 列にテーブルの所有者名が    格納されています。 2) テーブルが大文字/小文字混在で作成されている。   テーブルを大文字/小文字混在でCreate table しても、大文字でテーブルが   作成されますが、テーブル名をダブルクォーテーションで囲むと大文字/小文字   混在で作成させる事ができます。   その場合、ディクショナリにもテーブル名は大文字/小文字混在で格納されて   います。   where upper(table_name) = upper('テーブル名') で確認してみて下さい。 3) Synonym 経由で別の表にアクセスしている。   Synonum 経由で別の表にアクセスしている場合も、user_tab_columns や   all_tab_columns ビューには列情報は格納されません。   select owner, object_type, object_name from all_objects    where object_name = '先に指定したテーブル名';   上のSQL で、どの所有者のどのようなオブジェクトにアクセスしているか   確認してみて下さい。

fantaoisi
質問者

お礼

丁寧な回答ありがとうございます。 おかげで解決することができました。なんと仕様書上大文字小文字が混ざっていたのですが、実際には全て大文字でテーブル名が作られていたことが原因でした。 回答を試している内に気付きました。

関連するQ&A