[英]“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.