- - PR -
「エラー メッセージは Oracle から取得できませんでした」というエラーの対応方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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を使用している為だと思いますが、 何かご教授いただけたらと思っています。 よろしくお願いいたします。 |
|
投稿日時: 2008-06-05 16:29
自己レスいたします。
結果からなのですが、Date型でいく事になりそうです。 色々調べてみたのですが、私の力では2つの解決策しか見つかりませんでした。 まず一つ目ですが、セーフマッピングを使用する。 この方法ですが、どうもODPでは出来るみたいですがOLEDBではできないみたいです。 (調べ方が悪く、本来は出来るかもしれませんが・・・) アダプターを変更する事はできないので駄目! 次に二つ目ですが、TO_CHARを使用する。 この方法だとFill出来るのですが、とても修正量が多く、SQLServerとの処理も完全に分かれてしまうので駄目! という結果になりました。 結局なんの解決方法も見つからず、妥協案になってしまい申し訳ございませんでした。 この書き込みを見てくださった皆さん、ありがとうございました。 これからもよろしくお願いいたします。 |
1