我在ORACLE下面的示例查询中获取了一个数据表 “选择1 AS X FROM ...”
当我使用dr.Field(“X”)选择X时,它给了我错误。 我发现它以十进制数据类型返回。
在MSSQL中使用相同的语句没有问题,我有int数据类型。
对此有任何解决方法或解决方案吗?
答案 0 :(得分:3)
Oracle中的整数是一个精度为0的数字。由于您没有指定大小(可以大于16),它将被转换为十进制。
尝试将其强制转换为数字(16,0),你应该没问题。
对于建议使用ODP.NET的人:它会产生同样的问题。
答案 1 :(得分:2)
您的前端代码错误地自动检测字段的类型。您应该能够将其覆盖为整数。如果没有关于正在使用的语言/等的更多细节,则很难更具体。
答案 2 :(得分:2)
如果您知道该列的类型应该是 int 并假设它不是null:
int x = Convert.ToInt32 (dr.Field ["X"]);
这对于为该列返回 int 的其他数据库提供程序没有任何影响。
如果要更改Oracle查询以返回 int :
SELECT CAST(1 AS INTEGER) FROM ...
答案 3 :(得分:1)
我家里没有我的Oracle书籍,但显式转换或转换为整数可能是要走的路。 (说到Oracle查询,而不是检索结果的C#,尽管你也可以在那里进行转换。)就“Oracle”而言,“1”是不明确的。
答案 4 :(得分:1)
为了获得int而不是小数,我需要做的是:
SELECT CAST(1为NUMBER(9,0))FROM Dual