• ベストアンサー

Viewのカラムの長さが不明?

はじめまして。Viewについての質問です。 とあるViewを作成し、Number型のカラムの長さを調べた所なにも表示されておらず、わからない状態になってしまいました。 元のTableのNumber型のカラムには(10,0)がセットされており同じTableを参照している別のViewには正しく(10,0)と表示されています。 カラムの長さが表示されないViewは分析関数、インラインビュー、UNIONなどを使用しているのでそれらが邪魔をしてカラムが取得できないようになってしまったのでしょうか? こう言ったケースは初めてなので分かる方いらっしゃいましたら教えてください。 以上です。よろしくお願いします。

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

  • ベストアンサー
回答No.1

NUMBER型のスケール(精度)については、不明になります。 例えば、SCOTT.EMPのEMPNOは、NUMBER(4)ですが、 CREATE VIEW V_EMP(EMPNO) AS SELECT EMPNO+0 FROM EMP; としただけで、V_EMPのEMPNOは、桁数不明です。 (オラクルの属性追跡の限界なんでしょう)

その他の回答 (1)

  • GoF
  • ベストアンサー率37% (34/91)
回答No.2

検証したわけではありませんが、 クエリーのカラムに式を入れると、スケールが自動拡張(スケール指定なし)されるためだと思います。 スケールを保持するかえって、実行時例外だらけで使えない。 例) 4{NUMBER(1)} * 3 = 12 ・・・実行エラーが発生しましたとなる (暗黙変換でも同様に考えられます) 関数の戻り値には元々、引数のスケール情報は無関係です。 また、やりたくても引数のスケール情報を関数内部で取得する方法も確かなかったと思います。 演算子も、関数と同様と考えられます。

関連するQ&A