在我的应用程序中,我创建了Oracle列NUMBER(x,y)
并使用SQLT_FLT
进行绑定并定义了应用程序双变量,用于在Oracle数据库中写入和读取数据,如下所示。
b_IsErr = OCIDefineByPos(p_sql, &p_dfn, p_DBCon->p_err, iPos,
(dvoid*)pdValue, sizeof(double), SQLT_FLT, 0, 0, 0,
OCI_DEFAULT);
b_IsErr = OCIBindByPos(p_sql, &p_bnd, p_DBCon->p_err, iPos,
(dvoid*)pdValue, sizeof(double), SQLT_FLT, 0, 0, 0, 0, 0, OCI_DEFAULT);
但是,由于可能的精度损失,我尝试使用Oracle推荐的IEEE754数据类型BINARY_DOUBLE
。根据Oracle指南,应使用SQLT_BDOUBLE
调用bind和define函数来处理BINARY_DOUBLE
数据类型。
但是我的应用程序仍然使用了一些NUMBER(x,y)
列,并且我尝试使用相同的方式(SQLT_BDOUBLE
)来处理NUMBER(x,y)
列,并且它似乎工作正常。
我无法找到包含这是否正确的任何文件。 有人知道OCI请帮助。