OleDb驅動調用Oracle預存程序出錯:ORA-06502

來源:互聯網
上載者:User

  好久沒來這裡寫東西了,一直忙著修改系統的Bug和準備考試。大部分時間都用來學習專案管理的知識,新技術也研究和應用的少了,都不知道寫點什麼東西可好,也沒有要寫的東西了。

     正好這幾天在修改Bug過程中遇到了一個棘手的問題,資料庫採用的是Oracle 10g,應用伺服器的資料庫用戶端是Oracle 9i。串連資料庫是採用OleDb驅動方式,伺服器上必須要安裝Oracle的Oledb驅動補丁,否則就會出錯,之前也是因為沒安裝這個驅動,遇到了很大麻煩,也花費了好多精力去解決問題。

  在一個功能中需要調用預存程序,返回過程處理結果,沒有其它任何操作,跟蹤執行到ExecuteNonQuery();時,就會執行異常處理,預存程序完全正確,顯示錯誤如下:

  ORA-06502: PL/SQL: numeric or value error: character string buffer too small
  ORA-06512: At PUBLISH_ORG_MONTHLY, line 291
  ORA-01461: can bind a LONG value only for insert into a LONG Column
  ORA-06512: at line 1
 
  之前也找了各種方法解決都沒有成功,還以為是因為Oracle版本不一致,或者ODAC1020221-OLEDB驅動補丁不一致的原因造成,迫於無奈,把Oracle 9i卸了,重新裝了10g和驅動補丁,結果調用預存程序操作還是不通過。

  沒辦法了,下班時間也到了,第二天在解決吧。好像早上一來,頭腦也清醒了許多,就檢查了一下代碼中給預存程序傳遞參數的代碼,發現參數名稱和預存程序裡是一致的,驚訝的還發現有個參數順序和預存程序裡的不一致,然後就立馬調整順序,結果就執行通過了。

  心裡的一塊石頭總算是放下了,因為系統25號就要上線呀,不解決這幾天日子可都不好過~~~

  這也算是一個經驗吧,拿出來與大家共同分享,也提醒自己以後別在犯類似的錯誤,這樣可以節省好多精力。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.