C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 同一SQLなのに、結果が異なる現象


(過去ログ 27 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■12821 / inTopicNo.1)  同一SQLなのに、結果が異なる現象
  
□投稿者/ 相田 (1回)-(2008/01/18(Fri) 12:25:08)

分類:[C#] 

C# 2005
oracle10g

SQLをoracle Developerで実行した時と、
C#で流してDataTableに突っ込んだ結果が異なります。
どうしてでしょう?ヒントや切り口を頂けないでしょうか?

ちなみに
1.SQLは同じ文
  出力ウィンドウに表示されるSQLをコピペでDeveloperに流しています。

2.パラメーターの入れ間違いやリネーム違い等はありませんでした。

3.SQL発行は1SQLのみで、複数流れているような現象は、出力ウィンドウには見当たりません。

4.Developerの結果よりも、DataTableの結果の方が、多く件数を返しています。

  
引用返信 編集キー/
■12825 / inTopicNo.2)  Re[1]: 同一SQLなのに、結果が異なる現象
□投稿者/ はつね (393回)-(2008/01/18(Fri) 12:45:16)
はつね さんの Web サイト
No12821 (相田 さん) に返信
> C# 2005
> oracle10g

ミドルウェアは何をつかっていますか?

また、SQL*Plusで行った結果はどちらと一致しますか?

SELECT COUNT(*) FROM ・・・・・・
としたときの件数はどちらと一致しますか?

引用返信 編集キー/
■12826 / inTopicNo.3)  Re[1]: 同一SQLなのに、結果が異なる現象
□投稿者/ HiJun (89回)-(2008/01/18(Fri) 12:48:01)
そのSelect文をSqlPlus等で確認するとどうなりますか?
(多分どちらかの結果と一致すると思いますが...)

引用返信 編集キー/
■12827 / inTopicNo.4)  Re[1]: 同一SQLなのに、結果が異なる現象
□投稿者/ 魔界の仮面弁士 (574回)-(2008/01/18(Fri) 13:01:21)
No12821 (相田 さん) に返信
> 2.パラメーターの入れ間違いやリネーム違い等はありませんでした。

接続設定が間違っていて、別のサーバに接続していた、という事はないですか?
引用返信 編集キー/
■12830 / inTopicNo.5)  Re[2]: 同一SQLなのに、結果が異なる現象
□投稿者/ 相田 (3回)-(2008/01/18(Fri) 13:08:17)
回答ありがとうございます。

SQL*Plusで実行した場合、Developerで流した結果と同じものが得られました。

ミドルウェアに関しては、この会社の独自の物を使ってるぽいです。
恥ずかしいことに、詳しくは存知ておりません。
ただ、他画面やストアドで障害がおきていないので、
ミドルウェアのバグではないと思います。
引用返信 編集キー/
■12831 / inTopicNo.6)  Re[2]: 同一SQLなのに、結果が異なる現象
□投稿者/ 相田 (4回)-(2008/01/18(Fri) 13:09:25)
No12827 (魔界の仮面弁士 さん) に返信
回答ありがとうございます。

サーバ名を間違っておりませんでした。
引用返信 編集キー/
■12832 / inTopicNo.7)  Re[3]: 同一SQLなのに、結果が異なる現象
□投稿者/ 魔界の仮面弁士 (575回)-(2008/01/18(Fri) 13:33:33)
では、パラメータの型指定などはどうですか?

プロバイダによるのかも知れませんが、たとえば、型付 DataSet で TableAdapter を使うような場合において、
CHAR(10)項目に対して『WHERE HAGE = :HIGE』としていた場合、初期のパラメータ指定で
 DbType = AnsiString
 Size = 10
として取得される事があります。

これでも取得はできるのですが、この場合、末尾空白の有無が同一視されなかったため、
DbType を AnsiStringFixedLength に修正する必要があった…という状況を経験しています。

他には、日付型項目が DateTime では Date として判定されたため、時刻部を含む日付が
渡された時に、結果が異なってしまった…というケースも見たことがあります。
(日付型の件については、Oracle ではなく OleDb の場合でしたけれども)
引用返信 編集キー/
■12837 / inTopicNo.8)  Re[3]: 同一SQLなのに、結果が異なる現象
□投稿者/ はつね (394回)-(2008/01/18(Fri) 14:05:47)
はつね さんの Web サイト
No12830 (相田 さん) に返信
> SQL*Plusで実行した場合、Developerで流した結果と同じものが得られました。
>
> ミドルウェアに関しては、この会社の独自の物を使ってるぽいです。

独自ミドルウェアのバグか、独自ミドルウェアの使い方の間違えかのどちらかだと思います。


> ただ、他画面やストアドで障害がおきていないので、
> ミドルウェアのバグではないと思います。

バグではないという根拠には全くなりません。

ミドルウェアの開発者に状況を説明して対処してもらうのが良いかと思います。

引用返信 編集キー/
■12840 / inTopicNo.9)  Re[3]: 同一SQLなのに、結果が異なる現象
□投稿者/ 相田 (5回)-(2008/01/18(Fri) 14:18:51)
> ■No12827 (魔界の仮面弁士 さん) に返信

皆さん、回答ありがとうございます。
尚、魔界の仮面弁士 さん、おっしゃる通りでした。
AnsiString絡みが原因でした。
パラメータにAと入れているのに、勝手に、A○○(○は空白の意味)と付けられてました。

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



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -