這可能是一個複合問題,因爲我可能不完全理解問題。如何將Oracle NUMBER主鍵轉換爲SQL Server Ado.Net消費
我正在從Oracle Apex Query接口中抓取數據並將結果存儲在本地SQL Server實例中,以便本地應用程序可以利用這些數據。
我從中抽取的Oracle數據庫使用定義爲NUMBER數據類型(沒有定義精度或標度)的主鍵。我應該在SQL Server端使用哪種數據類型來存儲Oracle NUMBER字段?
我發現大多數文檔聲明將SQL Server中的NUMBER數據字段作爲Float存儲,但這不是有用的,因爲許多這些NUMBER字段表示主鍵(使用浮點值作爲主鍵一個壞主意)。我已經玩弄在Sql Server中使用DECIMAL(38,38)來存儲Oracle值,但是當您嘗試設置ADO.NET SqlParameter(例如在SqlCommand上)的DECIMAL類型(38,38)時, 38)與一個值,你會得到算術溢出錯誤,因爲它將始終完全擴大SCALE。例如。數字23425將擴展爲23425.00000000000000000000000000000000000000並且會發生溢出錯誤,因爲它已經用完了比SqlParameter的數據類型的精度更多的存儲空間。
SQL服務器中的`decimal(38,38)`是否意味着一個38位數的小數點右邊的數字?所以它永遠不會保持一個大於或等於一個的數字。 – 2011-02-01 19:00:07
+1是的,我希望能夠說明我無法完成的事情,這會讓別人記住如何完成同樣的事情。沒有精度或小數位的Oracle中的數字數據類型就像小數位(38,38),小數位右側的實際位數可能會有所不同。 – wllmsaccnt 2011-02-01 19:15:50