我正在用oracle OCI库开发一个C++库。我正在从Oracle数据库11g数据库加载。在这里,我需要加载带有小数位的大值。在这种情况下,我需要使用long double而不是double。我不确定OCI是否支持long double。
根据文档,SQLT_FLT仅用于浮点型和双精度型。谁能告诉我OCI是否支持long double,如果支持,如何检索它们
发布于 2012-08-28 18:01:26
是也不是。
根据server docs on floats的说法,“原生”C类型支持高达双精度(BINARY_DOUBLE)。但是,NUMBER类型可以存储:
这比x86/amd64上的long double更精确。
因此,您需要使用该类型而不是BINARY_*。不幸的是,developer docs说:
您不需要使用
NUMBER作为外部数据类型。如果您使用它,Oracle将以其内部的21字节二进制格式返回数值,并在输入时使用此格式。以下讨论仅为完整性而包含。
另一方面,还有关于以下内容的文档:
AFAICS OCINumberFromReal()支持long double;如果你想要更高的精度,你可以使用带有十进制字符串的OCINumberFromText()。
https://stackoverflow.com/questions/12156403
复制相似问题