C++ ODBC与oracle,绑定数字字段

C++ ODBC与oracle,绑定数字字段,c++,oracle,odbc,C++,Oracle,Odbc,我有个大问题。 我使用该函数从db读取类型,并在c中绑定正确的类型++ SQLGetDescField(cursor->_desc,i,SQL_DESC_TYPE,&field->type,NULL,NULL) oracle函数始终告诉我类型是:SQL\u DECIMAL 但是这是不正确的。您看到VARCHAR和DATE列的情况了吗 您在模式信息中看到了什么: SELECT table_name, column_name, data_type, decode(data_t

我有个大问题。 我使用该函数从db读取类型,并在c中绑定正确的类型++

SQLGetDescField(cursor->_desc,i,SQL_DESC_TYPE,&field->type,NULL,NULL)
oracle函数始终告诉我类型是:SQL\u DECIMAL
但是这是不正确的。

您看到
VARCHAR
DATE
列的情况了吗

您在模式信息中看到了什么:

SELECT table_name, column_name, data_type, 
decode(data_type,
    'DATE', '11',
    'NUMBER', data_precision || ',' || data_scale,
    data_length) data_length
FROM user_tab_columns
WHERE table_name='MY_TABLE' AND column_name = 'MY_COLUMN'

在ODBC中,我使用
SQLColumns()
函数来读取模式信息,并使用它可以检索(通过记录集)类型名称和列大小(对于各种数字类型,各种)。当然,您可以直接从
user\u tab\u列
中读取这些信息。对于数字类型,只需注意
数据\u精度
数据\u比例

谢谢,但这并不是解决方案:S问题在于oracle无法映射正确的数据类型:S,并且数字映射为SQL\u十进制。我已经用显式类型绑定解决了这个问题,我知道这不是解决方案,但您没有向我们展示数据库模式(如
创建表
),也没有为报告为
SQL\u DECIMAL
的内容接受正确的类型。我尽量避免在评论中输入太长时间的SELECT。使用
SQLColumns()
时,所有数值类型都报告为
SQL\u DECIMAL
,但从您的问题来看,不清楚
SQLGetDescField()
是否也显示非数值类型。