2013-09-23 22 views
0

我有一個很大的問題。 我使用從數據庫和綁定在C正確的類型++使用oracle的ODBC,綁定數值字段

SQLGetDescField(cursor->_desc,i,SQL_DESC_TYPE,&field->type,NULL,NULL) 

與Oracle函數讀式功能告訴我荃該類型是:SQL_DECIMAL 但它是不正確的。

回答

1

您是否看到VARCHARDATE列?

你怎麼在架構的信息,請參閱:

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_tab_columns閱讀這些信息。對於數字類型只需要照顧data_precisiondata_scale

+0

謝謝,但這不是解決方案:S 這個問題是,甲骨文未能映射正確的數據類型:S和數字映射在SQL_DECIMAL。我已經使用顯式的類型綁定進行了修復 – pava91

+0

我知道這不是解決方案,但是您沒有向我們展示數據庫模式(如'CREATE TABLE'),或者您接受的報告類型爲「SQL_DECIMAL」的正確類型。我儘量避免在評論中輸入這麼長的SELECT。使用'SQLColumns()',所有的數字類型都被報告爲'SQL_DECIMAL',但是從你的問題來看,不清楚'SQLGetDescField()'是否也顯示非數字類型。 –