2010-05-25 31 views
1

Sybase ODBC驅動程序在小數數據類型方面存在問題。如何解決使用NHibernate的Sybase ODBC驅動程序中的十進制值問題?

例如,當應用程序試圖在數據庫中保存一個十進制值出現此錯誤:當你試圖通過小數參數的存儲過程時

ERROR [22018] [DataDirect][ODBC Sybase Wire Protocol driver][SQL Server]Implicit conversion from datatype 'VARCHAR' to 'DECIMAL' is not allowed. Use the CONVERT function to run this query. 

同樣的錯誤。

我們如何使用NHibernate或流利的NHibernate修復它?

謝謝。

+0

你爲什麼使用ODBC? NHibernate支持Sybase客戶端。 – 2010-05-25 15:13:20

+0

此問題也會影響Sybase ASE的ADO.Net庫。 – 2012-11-06 15:43:19

回答

1

我還沒有找到簡單的解決方案。我改變了XML和POCO的System.Decimal到System.Double,它的工作原理。我嘗試用CONVERT在xml文件中添加自己的sql-insert和sql-update,但它不能很好地工作(例如,值5.15被更改爲515)。

+0

也切換到System.Double,它也適用於我(注意:使用Sybase ASE ado.net提供程序)。 – 2012-11-06 15:45:38

0

數據庫不支持char,varchar到decimal的隱式轉換。這對JDBC有相同的行爲。請使用轉換功能並運行查詢。