- 締切済み
はじめまして!
はじめまして! ORACLE初心者です。 今、with句で複数のテーブルビュー作成後、出力されたビューからSELECTで値を取得する といった内容のSQLを作っているのですが、「ORA-00928」が発生しうまくいきません。 「ORA-00928」はどういった場合に起こるエラーなのでしょうか? 苦戦しています、だれか教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- SaKaKashi
- ベストアンサー率24% (755/3136)
関連するQ&A
- お世話になってます。
お世話になってます。 SQL初心者です。 現在、ORACLEでSQLを作成しているのですが、「ORA-00920」と「ORA-02063」が 発生し困っています。 「ORA-02063」の原因は調べてみると「ORA-00920」が原因の可能性があるみたいです。 「ORA-00920」のメッセージには「関係演算子が無効です。」とありますが、 調べてみてもよくわかりません。 実行するSQLは以下のような感じです。 ■SQL文 with テーブルA as( SELECT文 取得カラムA, 取得カラムB, 取得カラムC ), テーブルB as( 取得カラムA, 取得カラムB, 取得カラムC ) SELECT * FROM テーブルA A_TABLE, テーブルB B_TABLE WHERE A_TABLE.取得カラムA = B_TABLE.取得カラムA (+) AND A_TABLE.取得カラムB = B_TABLE.取得カラムB (+) AND A_TABLE.取得カラムC = B_TABLE.取得カラムC (+) ***ココマデ*** ビューの作成はうまくいっているのですが、 テーブルAとテーブルBを使用したSQL文でエラーになっているようです。
- 締切済み
- Oracle
- select句副問い合わせ 値の個数が多すぎます
SQL初心者です。 ORACLEで、SELECT句に副問い合わせを付けたところ、ORA-00913:値の個数が多すぎますとエラーになってしまいます。 解決法をご教授願います。 同一テーブルの同一項目を複数項目として取得したいのです。 SELECT (SELECT B.DDD ,B.EEE FROM A_MST A ,B_MST B WHERE A.AAA = B.BBB AND A.BBB = CMST.CCC), (SELECT B.DDD ,B.EEE FROM A_MST A ,B_MST B WHERE A.AAA = B.BBB AND A.BBB = CMST.FFF) FROM C_MST CMST WHERE CMST.A_RYAKU = '123'
- ベストアンサー
- Oracle
- Oracle Nunber型の精度(桁数)について
Oracleデータベース上のテーブルにNUMBER(1,0)で定義した項目を追加し、 その項目にSQLで値(数値で1、または0)をセットしたところ、「ORA-01438: この列に許容される指定精度より大きな値です」のエラーが発生しました。 同じテーブル上に元々NUMBER(1,0)で定義された項目があり、そちらでは 同じエラーがでません。 何か原因として考えられる事はあるのでしょうか?
- ベストアンサー
- Oracle
- ORA-01438について
OracleのPL/SQLの作成で "ORA-01438: 指定した精度を超えた値が列に指定されています"の エラーメッセージが出てしまいます。 PL/SQL上で、値が整数2桁+少数2桁 となるところを計算式を修正し 整数4桁になるようにしたところ、ORA-01438が出るようになりました。 ちなみに全てselectのはずです。 該当のカラムは副問い合わせを介してテーブルから呼んでいるのですが、 大本のカラムには精度(桁数)指定はありません。 いったいこれは何の精度指定に引っ掛かっているのでしょうか。 考えられる可能性を提示して頂けると大変助かります。
- 締切済み
- Oracle
- オラクルDBからのデータ取得について
こんばんわ。 オラクル(sqlplus)についての質問2点です。 (1)シェルからオラクルDBへアクセスし、データを取得したいのですが、 select時に、結果のヘッダーをつけずに結果(データ)のみをファイル出力することは可能でしょうか? (DB2で言うところの「-x」オプションのような・・・) (2)エラー時にSQLコードを取得したいのですが、SQLコードをファイル出力することは可能でしょうか? オラクルは初心者で、行き詰まってしまいました・・・ どうかよろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- オラクル結合SQL
こんばんわ。オラクル初心者です。 オラクル9.1で、下記のようにtable1とtable2を結合して、view1(oracleビュー) を作成したいのですが、どのようなSQLがよいでしょうか。 なかなかうまい方法がなくてこまっています。 table1 no 項目 その他 その他1 1 1 1 2 1 3 .....省略 table2 no 項目 種別 結果 1 1 01 3 1 1 02 8 1 1 03 7 1 2 01 9 1 2 02 6 1 2 03 2 1 3 01 1 ...... view1 良い例 no 項目 結果1 結果2 結果3 1 1 3 8 7 ←種別01 02 03を順にいれる 1 2 9 6 2 1 3 1............ select table1.no,table1.項目,・・・ from table1,table2 where table1.no = table2.no and table1.項目 = table2.項目 ↑おおよそこのような感じになるとは思ってます。 何とか頑張ったのですが、下記のようになってしまうことが 多かったです・・・。どこかSQLがわるいようです。 view1 悪い例 no 項目 結果1 結果2 結果3 1 1 3 8 7 1 1 3 8 7 1 1 3 8 7 1 2 9 6 2 1 2 9 6 2 1 2 9 6 2 1 3 1............ もしご存知の方いらっしゃいましたら、助かります。よろしくお願いいたします。
- ベストアンサー
- Oracle
- WITH句を使用したSQLの結果
WITH句を使用して総件数と1~20件までのデータを同時に取得するSQLを組んでみたところ、 WITH TMP AS (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO) SELECT T1.ALLCNT, T2.* FROM (SELECT COUNT(*) ALLCNT FROM TMP) T1, TMP T2 WHERE T2.CHECKROWNUM BETWEEN 1 AND 20; Oracle10.2.0.3.0のバージョンで ALLCNTが21になってしまう現象が発生してしまいました。 Oracle10.2.0.4.0や9iでは発生せず正しい総件数が取得できるのですが、 バージョンによる不具合は考えられますでしょうか。 それともSQL自体なにか悪い部分があるのでしょうか。 ちなみに T2.CHECKROWNUM BETWEEN 1 AND 100; と帰るとALLCNTが101と帰ってきます。 また、WITH句を使わず下記のようにTMPの部分をWITH句で使用したSQLに 置き換えると正しくALLCNTが取れます。 SELECT T1.ALLCNT, T2.* FROM (SELECT COUNT(*) ALLCNT FROM (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO)) T1, (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO) T2 WHERE T2.CHECKROWNUM BETWEEN 1 AND 20;
- 締切済み
- Oracle
- dba_で始まるシステム表を検索するには
御世話になります。 TEST01というユーザーでオラクルに接続して下記のSQL文を実行したら 下記のエラーメッセージが出力されました。 [実行したSQL] SELECT * FROM DBA_ROLES; [出力されたエラーメッセージ] ORA-00942: table or view does not exist ネットで調べていたら「dba_ で始まるシステム表の検索は、権限が必要です」という記事を目にしました。 どの権限、またどのように付与すればいいのでしょうか。 ご存知の方がいましたらアドバイス宜しくお願いします。
- ベストアンサー
- Oracle
- PL/SQLでのSQL文法
こんにちは。教えてください。 PL/SQLを使うのが初めで戸惑っています。 まず、PROCEDUREで =========================== BEGIN SELECT NAME FROM TABLE1 WHERE NAME='tanaka'; END; / =========================== このように書いて実行させようとすると、「コンパイルエラー」 「INTO句はこのSELECT文に入ります」というエラーが出ます。 SQLの文法的には間違ってないと思うのですが、INTO句とはこれいかに?? ネットでPL/SQLで検索かけて調べたのですがあまりにも初歩すぎて わかりませんでした。 PL/SQLやORACLEのメーリングリストでお勧めがありましたら教えてください。 よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
お礼
回答ありがとうございます。 投稿前に以下のサイトを見て空行は削除しました。 →http://shogizuki.com/nextstep/2009/09/sqlplusora00928.html 僕自身with句の使い方をよく知らなかったのでもう一度 使い方を確認してみると with テーブル名1 as ( セレクト文 ), テーブル名2 as ( セレクト文 ) SELECT テーブル名1.取得カラム, テーブル名2.取得カラム FROM テーブル名1, テーブル名1 ↑↑↑二つ目のwith句の前にカンマを入れ忘れていました。 これで「ora-00928」関する問題は解決?したようです。 すると、「ora-00905」なるエラーが表示されました。 調べてみるとSQLの構文エラーらしいです。 少し調べてわからなくなったらまた質問します。 回答ありがとうございました!