[英]“SELECT 1 FROM … ” in oracle returns a decimal type
我從下面的ORACLE“ SELECT 1 AS X FROM ...”中的示例查詢獲取數據表。
當我使用dr.Field(“ X”)選擇X時,它給了我錯誤。 我發現它返回為十進制數據類型。
在MSSQL中使用相同的語句沒有問題,我有int數據類型。
任何解決方法或解決方案?
Oracle中的整數是精度為0的數字。由於未指定大小(可以大於16),因此將其強制轉換為十進制。
嘗試將其強制轉換為number(16,0),您應該沒問題。
對於建議ODP.NET的人們:它也有同樣的問題。
您的前端代碼錯誤地自動檢測了字段的類型。 您應該可以將其改寫為整數。 如果沒有使用語言/ etc的更多詳細信息,就很難更具體了。
如果您知道該列的類型應為int並假定其不為null:
int x = Convert.ToInt32 (dr.Field ["X"]);
這對於為該列返回int的其他數據庫提供程序不會有任何影響。
如果要更改Oracle查詢以返回int代替:
SELECT CAST(1 AS INTEGER) FROM ...
我家里沒有甲骨文的書,但是顯式轉換或強制轉換為整數可能是最好的選擇。 (說到Oracle查詢,不是您的C#檢索結果,盡管您也可以在那里進行轉換。)就Oracle而言,“ 1”是模棱兩可的。
為了獲取整數而不是十進制,我需要做的是:
從Dual中選擇投放(1作為NUMBER(9,0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.