Pro*Cの大文字小文字の変化でSELECTができなくなる現象について

このQ&Aのポイント
  • Oracle9 Pro*Cでの開発において、大文字小文字の変化がSELECTの結果に影響を与える現象が発生しています。
  • 具体的には、項目名を大文字で指定した場合はデータがNotFoundとなり、小文字で指定した場合はデータが取得できるようになっています。
  • この現象は環境によるものではなく、何らかの理由によって発生している可能性があります。
回答を見る
  • ベストアンサー

Pro*Cの大文字小文字

こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLが変です。 どう変かというと・・・ (1)EXEC SQL SELECT ABC FROM DB1 WHERE A_NUM = '1'; (2)EXEC SQL SELECT abc FROM DB1 WHERE A_NUM = '1'; (3)EXEC SQL SELECT Abc FROM DB1 WHERE A_NUM = '1'; 元々(1)のように記述してありました。 それがある日突然データがあるのにNotFoundになって、ためしに項目名ABCをabcに変えたところ、なぜだかselectできるようになりました。 しかし(2)も今日突然データがあるのにNotFoundになり、(3)のようにAbcにかえたところ、selectできるようになりました。 大文字小文字は関係ないと誰に聞いても言われるのですが、実際今は(3)でないと同じデータでもselectできません。 今はこれでいいですが、この調子で行くときっといつか(3)でもselectできなくなり、aBcとかにしなくてはいけない日が来ると思うのです。 なんででしょう? 環境の問題とかでしょうか? 何か分かる方がいたら、よろしくお願いします。

noname#7237
noname#7237

質問者が選んだベストアンサー

  • ベストアンサー
  • manayu
  • ベストアンサー率53% (79/148)
回答No.1

確かに大文字小文字は関係ないと思うのですが・・・ SQL*PlusかなんかでSQL文投げても同じですか? ここで聞くよりはSQLのカテゴリーで聞いた方がいいかもしれません・・・。

noname#7237
質問者

お礼

回答ありがとうございます。 御礼遅くなりすみません。。 SQL*Plusでは、大文字でも小文字でもうまくいくのです。 SQLのカテゴリーで聞いてみます。 ありがとうございました!

関連するQ&A

  • 【再投稿】Pro*Cの大文字小文字

    こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLが変です。 どう変かというと・・・ (1)EXEC SQL SELECT ABC FROM DB1 WHERE A_NUM = \'1\'; (2)EXEC SQL SELECT abc FROM DB1 WHERE A_NUM = \'1\'; (3)EXEC SQL SELECT Abc FROM DB1 WHERE A_NUM = \'1\'; 元々(1)のように記述してありました。 それがある日突然データがあるのにNotFoundになって、ためしに項目名ABCをabcに変えたところ、なぜだかselectできるようになりました。 しかし(2)も今日突然データがあるのにNotFoundになり、(3)のようにAbcにかえたところ、selectできるようになりました。 大文字小文字は関係ないと誰に聞いても言われるのですが、実際今は(3)でないと同じデータでもselectできません。 今はこれでいいですが、この調子で行くときっといつか(3)でもselectできなくなり、aBcとかにしなくてはいけない日が来ると思うのです。 なんででしょう? 環境の問題とかでしょうか? 何か分かる方がいたら、よろしくお願いします。

  • PCC-S-02201エラー

    こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLでコンパイルエラーが出てしまいます。エラー内容は 「PCC-S-02201, 記号"+"が見つかりました。」 SQLPlus上では問題なく検索されるのですが、うまくいきません。 何が問題なのでしょうか? EXEC SQL SELECT A_DAY FROM DB1 WHERE B_NUM = ((SELECT B_NUM FROM DB1 WHERE A_DAY = '20040722') + 1); B_NUMはNUMBER型です。

  • 検索結果件数を取りたいです。

    環境は、php + mysqlで作ってます。 DBのテーブルに格納されている文字列をセレクト文で取り出して 対象件数が何個あるか知りたいです。 DBのテーブルに格納されている文字列はURLの文字列が入ってます。 例えば http://www.yahoo.com/ 確認のため、予め $obj = "http://www.yahoo.com/"; として、DBに入っているデータを書いておいて以下を実行しました。 $sql="select * from geturl where url=".$obj; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); echo $num; 結果: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/~~ といったエラーが出てしまいました。。。 今度は、予め数字を入れておいて実行してみました。 入れた文字は「123」です。 $obj = "123"; $sql="select * from geturl where url=".$obj; $datas = mysql_query($sql , $db ); $num = mysql_num_rows($datas); echo $num; 結果:正しく対象件数がブラウザに表示されてました。 数字だと正しく処理されて、英文字だとエラーになる原因がわかりません。。 アドバイスいただければ幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • SQLで'ABC'をDBの'AB'にHIT

    sqlite3をVC++2013で扱っています。 もしかしたら、単純な方法があるのかもしれないので質問させてください。 DBに渡す文字が'ABC'でDB内のデータ'AB'にHITさせたいと思っています。 現状思いつく方法は select * from テーブル where キー like 'A%'; select * from テーブル where キー like 'AB%'; select * from テーブル where キー like 'ABC%'; と渡す文字を一文字ずつ増やして検索して row数が0以上の一番小さい数のデータを取得するという方法しか思いつかないのですが。 何か良い方法はありますでしょうか?

  • 【Transact-sql】 execの結果をoutputパラメータに持たせたい

    タイトルの通り、execの結果をoutputパラメータに持たせたいのですが、 どうすればご存知の方、ご教授お願いします。以下のように、count(*)の結果を持たせたいです。以下にサンプルコードを記載しました。 ---ストアドabc--- ( @aWork int output, @bWork int output, @cWork int output, @IDs varchar ) declare @Sql1 varchar(500) declare @Sql2 varchar(500) declare @Sql3 varchar(500) declare @IDs varchar(500) set = '1,2,3' set @Sql1 = 'select count(*) from a where id = ' + IDs -- @aWork = exec(@Sql1)としたい exec(@Sql1) set @Sql2 = 'select count(*) from b where id = ' + IDs -- @bWork = exec(@Sql2)としたい exec(@Sql2) set @Sql3 = 'select count(*) from c where id = ' + IDs -- @cWork = exec(@Sql3)としたい exec(@Sql3)

  • Pro*C コンパイルエラー

    procコマンドにてコンパイルを行った時に、下記のエラーが出てしまいます。何故でしょうか? 原因の分かる方、誰か教えて下さい。 Pro*C/C++: Release 9.2.0.1.0 - Production on 土 Apr 16 15:19:06 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 行0、列0でエラーが発生しました。ファイルtest001.pc PCC-F-02102, Cプリプロセッサ処理を実行中に致命エラーが発生しました。 行1661、列2でエラーが発生しました。ファイルtest001.pc 1661 } 1661 .1 1661 PCC-S-02014, 記号"<eof>"が見つかりました。 次のうちの1つが入るとき: ; { } , = : ( ) [ ] * ? | & < > + - / % ~ ! . # @ ^ *= /= %= += -= <<= >>= &&= ||= ^= ~= := | & == != <= >= << >> ++ -- -> ... .. <> ** => an identifier, a string, a numeric constant, a sql string, misc. punctuation, newline, define, elif, else, endif, error, if, ifdef, ifndef, include, line, pragma, undef, exec, sql, begin, end, var, type, oracle, an immediate preprocessor command, a C token, exec sql, exec sql include, exec sql var, exec sql begin, exec sql end, end-exec, exec sql type, exec oracle, exec oracle else, exec oracle endif, exec oracle begin, a sql hint, create, function, package, procedure, trigger, or, replace, a C++ token,

  • Pro*Cの構文エラー

    コンパイル時に、下記のエラーが出て困っています。 誰か教えて下さい。 Pro*C/C++: Release 9.2.0.1.0 - Production on 土 Apr 16 15:19:06 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 行0、列0でエラーが発生しました。ファイルtest001.pc PCC-F-02102, Cプリプロセッサ処理を実行中に致命エラーが発生しました。 行1661、列2でエラーが発生しました。ファイルtest001.pc 1661 } 1661 .1 1661 PCC-S-02014, 記号"<eof>"が見つかりました。 次のうちの1つが入るとき: ; { } , = : ( ) [ ] * ? | & < > + - / % ~ ! . # @ ^ *= /= %= += -= <<= >>= &&= ||= ^= ~= := | & == != <= >= << >> ++ -- -> ... .. <> ** => an identifier, a string, a numeric constant, a sql string, misc. punctuation, newline, define, elif, else, endif, error, if, ifdef, ifndef, include, line, pragma, undef, exec, sql, begin, end, var, type, oracle, an immediate preprocessor command, a C token, exec sql, exec sql include, exec sql var, exec sql begin, exec sql end, end-exec, exec sql type, exec oracle, exec oracle else, exec oracle endif, exec oracle begin, a sql hint, create, function, package, procedure, trigger, or, replace, a C++ token,

  • Pro COBOLでは、最後執行したSQL文を取得したい

    【背景】バッチプログラムを実行中、トラブルが発生した場合、どのSQL文が発行されてトラブルになったか知りたいです。   例えば、EXEC SQL SELECT * FROM USE_TABLE WHERE USE_ID=:USE_ID直後でトラブルになった場合、仮に:USE_ID='yxy19700804'でしたら、COBOLがOracleにEXEC SQL SELECT * FROM USE_TABLE WHERE USE_ID='yxy19700804'といったSQL文を発行した直後、トラブルになります。「EXEC SQL SELECT * FROM USE_TABLE WHERE USE_ID='yxy19700804'」をシステム的に取得方法がありますか?

  • LIKE検索の場合うまくいきません

    WEBアプリとSQLServerでSELECTをするときに不正をされないように SELECT * FROM DB WHERE DB.A = 検索文字 を SELECT * FROM DB WHERE DB.A= @A のようにして、@Aを後で指定しますが、 SELECT * FROM DB WHERE LIKE '%検索文字' のようにLIKE検索の場合うまくいきません。 どのように記述したらいいのでしょうか? SELECT * FROM DB WHERE DB.A LIKE @A --> 駄目 SELECT * FROM DB WHERE DB.A LIKE '%@A' --> 駄目

  • ROWID型の宣言について(Pro*C)

    (Oracle9i) Pro*Cにて、ROWIDを使用したSELECT&INSERTをしたいのですが、 ホスト変数をROWID型で宣言しようとするとエラーになります。 [PCC-S-02201, 記号"rowid"が見つかりました。 次のうちの1つが入るとき~] 宣言の仕方は以下の通りです。  EXEC SQL BEGIN DECLARE SECTION;   rowid fetch_ROWID;   short fetch_ROWID_ind;  EXEC SQL END DECLARE SECTION; ROWIDという型はORACLEにあるので、なぜプリコンパイルが通らないのか 分かりません。 どなたかお分かりになる方がいらっしゃいましたらよろしくお願いいします。 ちなみに以下のような使い方をしようとしていますので、参考までに 載せておきます。  EXEC SQL DECLARE C_XXX CURSOR FOR   SELECT ・・・,ROWID FROM XXX FOR UPDATE ・・・  EXEC SQL OPEN C_XXX;  EXEC SQL WHENEVER NOT FOUND DO break;  while(1){   EXEC SQL FETCH C_XXX INTO    ・・・,    :fetch_ROWID:fetch_ROWID_ind;   EXEC SQL    UPDATE XXX    SET ・・・    WHERE ROWID=:fetch_ROWID:fetch_ROWID_ind;  }

専門家に質問してみよう