![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
VB6 で oo4o を使って Oracle DB開発をしています。
Oralce 8.1.6 から Oracle10.2.0 にサーバを切り替えました。
bというテーブルがあって、
a c d
---- ------ -----
10 2 1
20 3 1
30 4 1
40 5 1
50 6 2
というデータがあったとします。
Select MAX(a) as a from b WHERE d=1
のようなSQLをVBから発行したときに
SQL*PLUSでは、
a
----
40
という結果が返ってくるのですが、VBでは、
a
---
10
20
30
40
のように複数行のレコードセットが帰ってきます。そのため、最大行を取得できません。Oracle8 のときは、SQL*PLUSと同じ結果が返ってきていました。ちなみに
Select MAX(a) as a from b WHERE d=1 GROUP BY d
~~~~~~~~~~
と、GROUP BYを付けると、ただしい(SQL_PLUSと同じ値)値が取得できます。
Oracle10.2.0の問題か、oo4oの問題かと考えています。
ちなみにoo4oのオブジェクトは、
CreateObject("OracleInProcServer.XOraSession")
で作成していて、クライアントのバージョンは 9.2.0.4.4です。
長文で失礼しますが、どなたかSQLを変更せずに解決する方法をご存じないでしょうか?
No.1ベストアンサー
- 回答日時:
バグというか不具合なんだと思いますが、サポート契約ユーザなら、オラクルサポートに確認するのが良いでしょう。
サポート契約がないなら、手に入るもの・あるもので対応するしかないので、まずはサーバサイドか
クライアントサイドの問題か切り分けると良いかと。
(仮にオラクルサーバの問題だと、サポート契約ユーザ以外にはどうしようないという結果になります)
(1)現在の環境で、オラクルサーバに正しくSQL文が投入されているかを確認する。(セッショントレースとか見る)
(2)クライアントサイドの環境を変えてみる。例えば、古いクライアント環境(8i)の接続先をR10.2にして試すとか。
この回答への補足
ほぼ、解決しました!
セッショントレースを見たら、怪しいSQLがあって、それを検索したら以下のページが出てきました。
http://otn.oracle.co.jp/forum/message.jspa?messa …
http://support.oracle.co.jp/krown_external/oisc_ …
列名にエイリアスを使用して作成した Dynaset で正しい結果が得られない
という、oo4oのバグみたいです。
MAX(a) as a
と集計項目と、フィールド名が両方とも ”a”で同じだったためのようです。
サーバー側の設定では修正でき無そうなので、クライアント側のプログラムを確認する必要がありそうです。
でも、原因がわかったので少し安心しました。
ありがとうございます。
k_o_r_o_c_h_a_n さん、ありがとうございます。
役立つ情報ですね。
サポート契約については、多分無かったと思います。
(2)Oracle10.2.0のみがインストールされたPCで試しましたが、同じ結果でした。
(1)を試してみたいと思います。
ただ、今日職場にいけないので、明日試してみることになると思います。
また報告します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SIDとSERVICE_NAMEの違いとは?
-
ORA-12514が出た時の対処法と原因
-
突然オラクルへ接続できなくな...
-
共有サーバ接続で ora-12523
-
Sqldeveloperに関して
-
oracle 10g サーバ機のIPアド...
-
Oracle 10.2.0 でMAX集計がおか...
-
SQL 全角半角混在の文字列から...
-
Fedora16のrsyslogをアンインス...
-
デッドバイデイライトで遊びた...
-
CloverをインストールしたUSBメ...
-
ORA-12170のエラーについて
-
oracleのメモリ使用量が97%ほど...
-
AnyDVDとレジストリKey
-
SQLSERVER 2008 ODBC接続
-
Windows Storeを使わずに付箋を...
-
ObjectBrowserでエクスポート
-
バージョン違いのデータベース...
-
Oracle 64bit から win10 64bit...
-
Oracleへのリンクサーバー設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SIDとSERVICE_NAMEの違いとは?
-
突然オラクルへ接続できなくな...
-
ORA-12514が出た時の対処法と原因
-
異なる文字コードの環境にイン...
-
ORA-01092 ORACLEインスタンス...
-
Sqldeveloperに関して
-
共有サーバ接続で ora-12523
-
SQLNET.ORAの設定について
-
DBサーバの接続エラー
-
tnsnames.oraファイルについて
-
Oracle Enterprise Manager 管...
-
TNSListener サービスを再起動...
-
OracleのUID
-
SID、SERVICE_NAMES、GLOBAL_DB...
-
Enterprise Manager を使用し、...
-
oracle11g(64bit)に接続
-
OracleClientサーバIPアドレス変更
-
OracleDB接続エラー(ORA-12541...
-
DBサーバ接続エラーについて
-
OracleのWindowsプロセス名
おすすめ情報