- PR -

「エラー メッセージは Oracle から取得できませんでした」というエラーの対応方法

1
投稿者投稿内容
Koh
会議室デビュー日: 2008/06/05
投稿数: 2
投稿日時: 2008-06-05 14:31
初めて投稿させていただきます。

Server   :Windows2003
クライアント:XP SP2
アダプター :OleDbDataAdapter
プロバイダー:Microsoft OLE DB Provider for Oracle(MSDAORA)

今回やりたいことというのは、
「SQLServer2000(SP4)」、「ASP.NET2003(VB)」で作成されている既存WEBアプリの「ORACLE10G」、「ASP.NET2003(VB)」バージョンを作成する事です。
データベースが「SQLServer2000(SP4)」から「ORACLE10G」へ変更されます。

問題点ですが、
OleDbDataAdapter.Fill(DataSet, TableNm)の位置でエラーが起きます。

下記がエラー内容です。

「Message :エラーを特定できません
Oracle エラーが発生しましたが、エラー メッセージは Oracle から取得できませんでした。
データ型はサポートされていません。」



今回ORACLEではDate型は使用せずTimeStamp型を使用しています。
SQLServerのDateTime型と精度を合わせる為です。
Date型を使用した場合エラーは起きませんでした。

ちなみにSQLServerバージョン、OracleのDate型を用いた場合には上記エラーは起こっていません。


後何点かお願いをされています。(ユーザ様から)
日付値はSQLServerに合わせる(ミリ秒3桁)
アダプター等の変更はしないで欲しい(大幅な修正が発生する為)
SQL文をSQLServerと共通にして欲しい(データベース独自の関数等使用しない)
極力コード変更はしないで欲しい

です。

というのもパッケージ商品でXML等に書かれた設定値を変更するだけでSQLServerとOracleを切り替えたいという事です。


今回のエラーはTimeStampを使用している為だと思いますが、
何かご教授いただけたらと思っています。
よろしくお願いいたします。





Koh
会議室デビュー日: 2008/06/05
投稿数: 2
投稿日時: 2008-06-05 16:29
自己レスいたします。

結果からなのですが、Date型でいく事になりそうです。

色々調べてみたのですが、私の力では2つの解決策しか見つかりませんでした。

まず一つ目ですが、セーフマッピングを使用する。
この方法ですが、どうもODPでは出来るみたいですがOLEDBではできないみたいです。
(調べ方が悪く、本来は出来るかもしれませんが・・・)
アダプターを変更する事はできないので駄目!

次に二つ目ですが、TO_CHARを使用する。
この方法だとFill出来るのですが、とても修正量が多く、SQLServerとの処理も完全に分かれてしまうので駄目!

という結果になりました。

結局なんの解決方法も見つからず、妥協案になってしまい申し訳ございませんでした。

この書き込みを見てくださった皆さん、ありがとうございました。
これからもよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)