隨筆-8  評論-39  文章-0  trackbacks-0

          今天在調試程序中,遇到一個“ ORA-03115: unsupported network datatype or representation ”的錯誤。問題已經解決,有一些心得體會。

          ?

          環境:

          Oracle 8.17 數據庫一臺, Oracle 9i 數據庫一臺,兩者間建有一個 DBLink 將相關的 shema 連接起來。在 Oracle 9i 這一端有一個 Table A, 如下:

          ?

          Field Name

          Field Type

          ……

          …..

          confirm_time

          Timestamp

          ?

          creation_time

          Date

          ?

          ……

          ?

          情景:

          有一個 Java 程序通過 JDBC 連接到 Oracle 8 那一端,現在這個應用程序需要通過 DBLink 訪問 Oracle 9i 中的 Table A. 寫下如下的查詢語句:

          ?

          select nvl(confirm_time, creation_time) from A@.....

          ?

          該語句在 SQL Plus PL/SQL Developer )中執行能夠完成并返回正確的結果,但將該語句放入 PreparedStatement 執行是,卻得到錯誤:“ ORA-03115: unsupported network datatype or representation

          ?

          原因分析:

          Oracle 8 中還不存在 Timestamp 這樣的數據類型,而無論是字段 confirm_time, 還是表達式 nvl(confirm_time, creation_time) 返回的都是 Timestamp 類型,故會得到 ORA-03115 的錯誤。(在 PL/SQL Developer 中為何不出錯就不知道了,呵呵 …. 見笑見笑啦)

          ?

          解決方法:

          SQL 語句中將 Timestamp 轉化為 Date 類型,如:

          ?

          select nvl(to_date(to_char(confirm_time, “yyyy-mm-dd hh24:mi:ss”), “yyyy-mm-dd hh24:mi:ss”), creation_time) from A@........

          ?

          ?

          ?

          posted on 2007-02-08 07:37 Jini 閱讀(2376) 評論(2)  編輯  收藏 所屬分類: 數據庫相關

          評論:
          # re: 在Oracle8中通過DBLink存取Oracle9中Timestamp類型的問題 2007-04-18 16:03 | Freed
          費勁了點,cast(timestamp as date)就可以了。  回復  更多評論
            
          # re: 在Oracle8中通過DBLink存取Oracle9中Timestamp類型的問題 2007-04-18 16:28 | Jini
          @Freed

          謝謝!確實簡單了。
            回復  更多評論
            
          主站蜘蛛池模板: 苏尼特右旗| 金昌市| 高雄市| 福贡县| 黄浦区| 灵川县| 萨嘎县| 扬州市| 荔浦县| 西平县| 万年县| 长兴县| 扎鲁特旗| 分宜县| 怀安县| 元谋县| 宣恩县| 巴彦县| 玛沁县| 营口市| 灵武市| 建宁县| 军事| 增城市| 顺平县| 义马市| 永德县| 连南| 东阳市| 海阳市| 荣昌县| 平安县| 永德县| 韩城市| 昌都县| 黎平县| 鄂州市| 辽宁省| 山阴县| 平利县| 胶州市|