none
クエリビルダはOracleで使用制限がありますか? RRS feed

  • 質問

  • 初めまして。いつも拝見させていただいております。
    .NET初心者ですが、VS2005を使用してWebアプリケーションを構築しております。

    カスタムSQLでSQLステートメントを作成し、クエリビルダ内では
    データが表示されるのですが、最後の”クエリのテスト”を実行しますと
    ”構文エラー:","、識別子または引用符で囲まれた識別子が必要です”
    との、エラーが出てしまい、GridViewにデータを表示する事が出来ません。

    環境:Win2003Server
    DB:Oracle10g

    ご教授お願いいたします。

    SQL>
    SELECT * FROM テーブルA INNER JOIN テーブルB
    ON テーブルA.ID = テーブルB.ID
    WHERE (テーブルB.ID = :ID)
    OR (テーブルB.ID_1 = :ID_1)
    OR (テーブルB.ID_3 LIKE '%' || :ID_3 || '%')

    2006年8月24日 8:04

回答

  • ありがとうございます。
    調査結果ですが、こちらでも有効な情報を取得できませんでした。
    OTNには、FrameWork2.0関連の情報自体、少ないですよねぇ
    今回はTH01さんの助言もあり、解決できましたが
    この先、どうなることやら・・・・・・

    これからも、宜しくお願いします!

    2006年8月25日 7:30

すべての返信

  • 制限の有無については知りませんが、エラーの通り一度、識別子を引用符で囲まれてはいかがでしょうか?
    以下はすべて囲みましたが、少なくとも日本語の識別子は囲った方がいいと思います。

    SELECT * FROM "テーブルA" INNER JOIN "テーブルB"
    ON "テーブルA"."ID" = "テーブルB"."ID"
    WHERE ("テーブルB"."ID" = :ID)
    OR ("テーブルB"."ID_1" = :ID_1)
    OR ("テーブルB"."ID_3" LIKE '%' || :ID_3 || '%')

    2006年8月24日 12:30
  • TH01さん ご返答、ありがとうございます。
    エラーメッセージの通り、引用符で囲ってみたりもしたのですが結果は同じでした。

    単一テーブルから、データ抽出する場合はデータ取得出来るのですが
    INNNER JOINさせるとダメみたいです。
    それとも、クエリビルダの使用方法が間違っているのでしょうか?

    2006年8月25日 0:53
  • 本当ですね。試さずに返信したことをお詫びします。

    一応、エラーが発生しても [完了] すれば良さそうです。

    GridView の場合は、[自動生成フィールド] にするか、自分で BoundField を追加して DataField に自分でフィールド名を書けば、正常に機能しているように見えます。
    DataList の場合は、バインドの設定時に [フィールドのバインド] が選択できなくなってしまいますが、
    [カスタム バインド] で 「Eval("ID")」とかすることで正常に動作し、生成されるコードも同じになります。

    もう一つの回避方法としては、オラクルの「方言」で書けば正常に動作しました((+) も使えました)。
    けど不具合のために今更そんな書き方はしたくないですが

    もしかすると OTN のサイトには何か情報があるかもしれません(オラクル側のコントロールを使えばよいなど)。
    時間ができれば調べてみようと思います。(と書いたときはたいてい調べなかったり
    私は知りませんでしたが、たぶん有名な話なんじゃないかなぁと思ったりします...

    2006年8月25日 1:57
  • TH01さん 早速のご返答ありがとうございます。

    BoundFieldに直接記述して解決しました!
    LIKEを記述した時も(+)で悩みました。
    私も、もう少し調べてみます。

    ありがとうございました。

    2006年8月25日 4:21
  • OTN には情報はなさそうでした。
    us のフィードバックセンターも見てみましたが、該当はなさそうでした。
    どちらもざっと目を通しただけですが...
    これは日本で日本語項目を使ってテーブルを join している場合の問題とかで、まだ誰も気付いていないとか...。
    私の場合、「ウィザード未使用+英数字項目」なので、ずっと気付かなかったかもしれません(^^;
    2006年8月25日 4:42
  • ありがとうございます。
    調査結果ですが、こちらでも有効な情報を取得できませんでした。
    OTNには、FrameWork2.0関連の情報自体、少ないですよねぇ
    今回はTH01さんの助言もあり、解決できましたが
    この先、どうなることやら・・・・・・

    これからも、宜しくお願いします!

    2006年8月25日 7:30