お世話になっています。
テーブルからのデータ取得処理について原因のわからないエラーが出てしまい、お力をお借りしたいと思います。
環境はVB2005になります。
入力された番号を元にデータを取得するのですが、「ORA-00904: "店コ": 無効な識別子です。」というエラーが出てしまいます。
途中で項目名が途切れてしまっているように見えますが、なぜこうなるのかがわかりません。もっと長い項目名(漢字8文字)は問題なかったので、項目の文字列長が原因とも思えないのですが、解決方法がお分かりの方がいらっしゃいましたらご教授ください。
よろしくお願いします。
##以下コード
cmd.Connection = connection
cmd.CommandText = Nothing
cmd.CommandText = "SELECT 店コード FROM A000 " & _
"WHERE 顧客番号 = '" & strKokyakuNum & "' " & _
"AND 顧客番号枝番 = '" & strKokyakuEda & "'"
connection.Open()
reader = cmd.ExecuteReader() ←ここでエラー
Oracleのエラーが出ているのですよね。
まずは,同一のSQLをOracle付属のソフトで流してみてください。
同様のエラーが出ると思います。
# つまりは,VBの問題ではなく,Oracleの問題ではないか,ということ。
ちょっとgoogleで調べた感じでは,列名を二重引用符でくくれば解決しそうですが。
YuOさんも書かれていますが、Oracle では、『ー』は、そのままでは使えないはずです。
他には、『No.』(実際は漢字一文字)なども駄目だったかと。
SELECT 店コード FROM 〜 ではなく、
SELECT "店コード" FROM 〜 にしてみてください。
プログラムでいえば、
cmd.CommandText = "SELECT ""店コード"" FROM A000 " &
のような構文になります。
それと…今回の問題とは別件ですが、strKokyakuNum 内に
「'」の文字が含まれていた場合のエスケープ処理は行ってありますか?
早速のご返答ありがとうございました。
ご協力いただきまして、なんとか解決することができました。
>それと…今回の問題とは別件ですが、strKokyakuNum 内に
>「'」の文字が含まれていた場合のエスケープ処理は行ってありますか?
先頭に「0」がくることがあるためstring型で宣言しておりますが、運用上数字以外の文字列がテーブルに存在することがありえないため、入力チェックでNumeric、Length等の確認を行い排他してあります。
ご心配いただきましてありがとうございました。
申し訳ありません。
解決のチェックを入れ忘れました。