• ベストアンサー

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

  • テーブル名をカラムとして取得する方法

    テーブル名をカラムとして取得する方法はありますでしょうか? オラクル8とVB6でプログラムを組んでいます。 例 TABLE Aの内容 カラム1 1 2 3 TABLE B カラム1の内容 4 5 6 SQLは簡略化してかきます。下記のSQLを実行した場合、 select A.カラム1 from A union select b.カラム1 from b 1 2 3 4 5 6 を取得できます。 例えば、上記で、SQL実行後、 下記のような値を取得したいです。 1 ,Aのテーブルだよ 2 ,Aのテーブルだよ 3 ,Aのテーブルだよ 4 ,Bのテーブルだよ 5 ,Bのテーブルだよ 6 ,Bのテーブルだよ それぞれのテーブルの名前を別名で結果に格納したいのです。 何か方法はありますでしょうか? なければ、unionせずに、2回SQLを発行し、それぞれに、 プログラム上で、「Aのテーブルだよ」を後で挿入したいと思っています。

  • リストビューのハンドルについて

    リストビューコントロールのハンドルについて疑問に思う事がありまして、ご教授よろしくおねがいします。 通常リストビューをCreateWindow()で作成した時に戻り値として受け取るウィンドウハンドルに対してSetWindowFont()を行うとリストビュー全体のフォントが変更されます。 リストビュー関数にはListView_GetHeader( リストビューハンドル );という関数が用意されていてリストビューのカラム部分のハンドルを取得できます。 このハンドルに対してSetWindowFont()を行うとカラム部分だけのフォントが変更されます。 という事はアイテム部分だけのハンドルを取得し、SetWindowFont()でフォントを変更する事はできるのでしょうか? ご教授よろしくお願いいたします。

  • MySQL5で、SUMした値を新たにカラムとして追加したビューを作成し

    MySQL5で、SUMした値を新たにカラムとして追加したビューを作成したいのですが、どういうSQLを書けばよいかわかりません。 今、Aというテーブルがあり、f1,f2,f3というカラムがあります。 このテーブルを元にvwAというビューを作成したいのですが、その際、f1でGroup Byしたf2のSUMをf2Keiというカラム名で追加し、最終的にf3とf2Keiという2つのカラムを持ったビューにしたいです。 create view vwA as select f3,select SUM(f2) as f2Kei from A GROUP BY f1 from A; と書いてみましたがエラーを返されました。 どのようなSQLを書けばよいか、ご教授ください。

  • AccessのSQLビューで書式を設定したい

    いつもお世話になっております。 AccessのSQLビューでユニオンクエリを作成しています。 このとき数字の書式を数値型から標準型に変更したい(3桁ごとに区切り点を表示させたくない)のですが、どのようにしたらよいのでしょうか? ちなみに元のテーブルは区切り点のない書式ですが、ユニオンクエリを作成して表示すると区切り点が入ってしまいします。 よろしくお願いします。

  • 【至急】COLUMNについて・・・

    万年カレンダーを作成する事になり以下の関数の解説を しなければならなくなりました。。。 万年カレンダー作成者の説明では理解できず、 解説をしようにも出来ません。 その関数とやらがこれです。 =IF(MONTH(DATE($B$4,$B$5,1)+COLUMN()-COLUMN($F$7))=$B$5,COLUMN()-COLUMN ($F$7)+1,"" 足りない頭で考えまくって出した答えが 「簡単に言うと、COLUMN関数は、【何列目であるか】を求める関数です。 【+COLUMN()-COLUMN($F$7)】これはDATE関数で求めた(年,月,日)がどの 場所からスタートするのかの基準を表します。 この場合、F列の7行目にDATEが始まる。ということになります。 その後に続く【=$B$5,COLUMN()-COLUMN($F$7)+1,""】は 左上の月の部分(今回であれば2月)に+1つきされると3月になるが、 その場合は表示しない。という意味になります。 因みに、【""】とは空欄(表示しない)という意味です。」 と解説したところ、全然違うとのこと・・・。 これ以上上手く説明出来る自信が有りません・・・・。 関数が得意な方、どうかお助け下さい!!!

  • マテリアライズド・ビューの変更

    マスターテーブルの定義変更(カラム追加等)をマテリアライズド・ビューへ反映することは可能でしょうか?ご存知の方がいらしたら教えて下さい。 マテリアライズド・ビューログを作成して高速リフレッシュを行う方針ですが、マテリアライズド・ビューを読み取り専用、あるいは更新可能で作成しても、リフレッシュで定義変更は反映されませんでした。

  • 「column "A" does not exist」というエラーが出て、ビューを作成することができません。

    「column "A" does not exist」というエラーが出て、ビューを作成することができません。 postgreSQL(8.2)&pgAdmin(1.6.3)で以下のようなビューを作成しようとしたところ、「column "A" does not exist」というエラーが出てしまい、作成することができません。 試しにMS ACCESSで全く同じSQL文を発行してみたのですが、ちゃんとクエリが作成でき、以下の図のように問い合わせ結果を閲覧することもできました。PostgreSQLでも作成できる方法があればご教示いただけないでしょうか。 CREATE VIEW v_test AS SELECT 1 AS A, A + 3 AS B; +----+ | A | B | +----+ | 1 | 4 | +----+ 上図のように1という数値を格納する列「A」と、その列の値に3を足した数値を格納する列「B」で構成されるビューを作成できればいいのですが、どうしてもできません(実際はもっと複雑な内容なのですが、要は、直前に定義した列(A)の値を参照する列(B)を作成することができないのです)。 そもそもPostgreSQLではできないものなのでしょうか。それとも初歩的な何かが抜けているのでしょうか。 該当するような参考文献が見つからないため質問させていただきました。 どうかご教示いただけないでしょうか。

  • Viewを作ると遅くなる?

    Viewを作成してそのViewに対してWhere句で条件を付けて検索する場合と、 Viewを作成せずに直接Where句で条件を付けて検索する場合と、どちらが パフォーマンスがよいでしょうか? (1)Viewを使わない例 SELECT 伝票番号,伝票日付,金額 FROM 伝票 WHERE 伝票番号=1 (2)Viewを使う例  あらかじめViewを作成しておく CREATE VIEW TEST_VIEW AS SELECT 伝票番号,伝票日付,金額 FROM 伝票 以下のSQL文を発行する SELECT * FROM TEST_VIEW WHERE 伝票番号=1 このような質問をした訳は、元となるテーブルの全件を対象とした Viewを作った場合、毎回テーブルフルスキャンを行ってViewを作成 したあとにWHERE句の絞り込みを行うのかどうかが気になったから です。

  • テーブル作成クエリで新テーブル作成時に、オートナン

    SELECT Q_ユニオンクエリ.* INTO 新テーブル FROM Q_ユニオンクエリ; テーブル作成クエリで、新テーブルを作成するときに、 元テーブルにはないフィールドを作成することは可能ですか? 元テーブルには主キーがなく、 カテゴリ、品名 というフィールドしかない場合、 テーブル作成クエリで新テーブル作成時に、オートナンバー型の主キーを付ける方法はありますか?

  • データシートビューからフォームビューへ切り替えられない。

    こんにちは。 以前、DexMachina様にご教授頂いたのですが 違うフォームを作っていたら データシートビューからフォームビューへ切り替えられないので教えてくださいませ。(アクセス2003) 前回質問:http://okwave.jp/qa4982081.html フォーム上(デザインビュー)にテーブルをドラッグしました。 (サブフォームのデフォルトのビューは、データシートビューになっていますが単票ビューに切り替えました。) 一度保存し、再度フォームを開くと、単票ビューで表示されるので その状態で、 Sub test() Forms("フォーム1").SetFocus Select Case Forms("フォーム1").Form.CurrentView Case 1 'フォームビューの場合 → データシートビューに切替 DoCmd.RunCommand acCmdSubformDatasheetView ' Forms("フォーム1").DefaultView = 2 Case 2 'データシートビューの場合 → ピボットテーブルに切替 DoCmd.RunCommand acCmdSubformPivotTableView End Select End Sub を実行すると、ちゃんとデータシートビューに切り替わります。 そしてデータシートビューからフォームビューへ切り替えようと思い 再度上記のコードを実行しても何も起こりません。 (エラーにもなりません) なぜでしょうか? ちなみに規定のビューをデータシートビューにして上記マクロを実行しても同様何も起こりません。データシートビューのままです。 MsgBox Forms("フォーム1").DefaultView で値を取得してみたら データシートビューでもフォームビューでも0が返って来ます。 何か原因がわかる方いらっしゃいましたら ご教授よろしくお願いします。