隨筆-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

          謝謝!確實簡單了。
            回復  更多評論
            
          主站蜘蛛池模板: 无锡市| 扎鲁特旗| 琼中| 额敏县| 永吉县| 永城市| 济源市| 咸宁市| 文登市| 绍兴市| 博客| 华坪县| 吉首市| 樟树市| 清河县| 贡觉县| 兴义市| 三门峡市| 沛县| 桑日县| 额济纳旗| 芮城县| 潮安县| 鸡东县| 双柏县| 怀来县| 连州市| 叙永县| 承德县| 汾阳市| 瑞安市| 林州市| 株洲县| 开平市| 蓬溪县| 鸡东县| 台南市| 且末县| 天门市| 锡林郭勒盟| 安福县|