テーブルからデータを取得するには?

解決


  2008-02-28 19:04:07  No: 144477

お世話になっています。

テーブルからのデータ取得処理について原因のわからないエラーが出てしまい、お力をお借りしたいと思います。
環境はVB2005になります。

入力された番号を元にデータを取得するのですが、「ORA-00904: "店コ": 無効な識別子です。」というエラーが出てしまいます。
途中で項目名が途切れてしまっているように見えますが、なぜこうなるのかがわかりません。もっと長い項目名(漢字8文字)は問題なかったので、項目の文字列長が原因とも思えないのですが、解決方法がお分かりの方がいらっしゃいましたらご教授ください。

よろしくお願いします。

##以下コード

    cmd.Connection = connection
    cmd.CommandText = Nothing

    cmd.CommandText = "SELECT 店コード FROM A000 " & _
                      "WHERE 顧客番号 = '" & strKokyakuNum & "' " & _
                      "AND 顧客番号枝番 = '" & strKokyakuEda & "'"
    connection.Open()
    reader = cmd.ExecuteReader()        ←ここでエラー


YuO  2008-02-28 19:18:46  No: 144478

Oracleのエラーが出ているのですよね。
まずは,同一のSQLをOracle付属のソフトで流してみてください。
同様のエラーが出ると思います。
# つまりは,VBの問題ではなく,Oracleの問題ではないか,ということ。

ちょっとgoogleで調べた感じでは,列名を二重引用符でくくれば解決しそうですが。


魔界の仮面弁士  2008-02-28 19:39:19  No: 144479

YuOさんも書かれていますが、Oracle では、『ー』は、そのままでは使えないはずです。
他には、『No.』(実際は漢字一文字)なども駄目だったかと。

SELECT 店コード FROM 〜 ではなく、
SELECT "店コード" FROM 〜 にしてみてください。

プログラムでいえば、
  cmd.CommandText = "SELECT ""店コード"" FROM A000 " &
のような構文になります。

それと…今回の問題とは別件ですが、strKokyakuNum 内に
「'」の文字が含まれていた場合のエスケープ処理は行ってありますか?


  2008-02-28 20:41:27  No: 144480

早速のご返答ありがとうございました。

ご協力いただきまして、なんとか解決することができました。

>それと…今回の問題とは別件ですが、strKokyakuNum 内に
>「'」の文字が含まれていた場合のエスケープ処理は行ってありますか?
先頭に「0」がくることがあるためstring型で宣言しておりますが、運用上数字以外の文字列がテーブルに存在することがありえないため、入力チェックでNumeric、Length等の確認を行い排他してあります。
ご心配いただきましてありがとうございました。


  2008-02-28 20:42:44  No: 144481

申し訳ありません。
解決のチェックを入れ忘れました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加