Article: Q271852
Product(s): Open Database Connectivity (ODBC)
Version(s): 2.5,2.6,2.7,Build 2.573.2927,Build 2.573.3513,Build 2.573.3711,Build 2.573.4202,Build
Operating System(s):
Keyword(s): kbDatabase kbDriver kbODBC kbOracle kbGrpDSVCDB kbGrpDSMDAC kbDSupport kbMDAC250bug kbM
Last Modified: 11-SEP-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft ODBC for Oracle version 2.5, versions Build 2.573.2927, Build 2.573.3513, Build 2.573.3711, Build 2.573.4202, Build 2.573.4403, Build 2.573.5303, Build 2.573.6019, Build 2.573.6526, Build 2.573.7326, Build 2.573.7626, Build 2.573.7713.2
- Microsoft Data Access Components versions 2.5, 2.6, 2.7
-------------------------------------------------------------------------------
SYMPTOMS
========
When you use Microsoft's Oracle ODBC driver with the ODBC SQLDescribeCol
function, incorrect values may be returned for the column name and column name
length.
CAUSE
=====
This problem occurs when you have a trailing space in the table's column name.
The Microsoft Oracle ODBC driver truncates any trailing spaces when the column
information is returned by the SQLDescribeCol function.
RESOLUTION
==========
You can work around this problem in either of the following ways:
- Use the SQLColumns ODBC API instead of SQLDescribeCol to retrieve the exact
name of the column. SQLColumns returns the correct name, without truncating
the trailing spaces.
-or-
- You can also query the catalog information from Oracle to retrieve the column
name. To do this, use the USER_TAB_COLUMNS table with the following SQL
statement:
Select COLUMN_NAME from USER_TAB_COLUMNS WHERE TABLE_NAME='TEST'
This statement returns the correct column name, including the trailing spaces.
STATUS
======
Microsoft has confirmed this to be a bug in the Microsoft products listed at the
beginning of this article.
MORE INFORMATION
================
Steps to Reproduce Behavior
---------------------------
1. Use the ODBC Test program (the Obdcte32.exe file that comes with the
Microsoft Data Access Components Software Development Kit) to connect to any
Oracle server.
2. Create a table by using the following commands and script. Call SQLExecDirect
to execute the following SQL statement:
Create table Test(" Col " VarChar2(10))
3. Call SQLExecDirect to execute the following SQL statement:
Select * from Test
4. Call SQLDescribeCol for column number 1. The output window displays the
following:
SQLDescribeCol:
...
Return: SQL_SUCCESS=0
Out: *ColumnName = " col", *NameLengthPtr = 4, *DataTypePtr = SQL_CHAR=1, *ColumnSizePtr = 10, *DecimalDigits = 0, *NullablePtr = SQL_NULLABLE=1
NOTE: We have created a column whose name is of length 5. SqlDescribeCol has
returned *NameLengthPtr = 4, instead of 5 as expected. Also note that the column
name is returned as " col" instead of as " col ". The trailing space has been
truncated by the driver.
Additional query words: msorcl32
======================================================================
Keywords : kbDatabase kbDriver kbODBC kbOracle kbGrpDSVCDB kbGrpDSMDAC kbDSupport kbMDAC250bug kbMDAC260bug
Technology : kbAudDeveloper kbODBCSearch kbMDACSearch kbMDAC250 kbMDAC260 kbODBCOracle25732927 kbODBCOracle25733513 kbODBCOracle25733711 kbODBCOracle25734202 kbODBCOracle25734403 kbODBCOracle25736526 kbMDAC270 kbodbcOracle25737626 kbodbcoracle25735303 kbODBCOracle25736019 kbODBCOracle25737326 kbODBCOracle257377132 kbODBCOracle250Search
Version : :2.5,2.6,2.7,Build 2.573.2927,Build 2.573.3513,Build 2.573.3711,Build 2.573.4202,Build 2.573.4403,Build 2.573.5303,Build 2.573.6019,Build 2.573.6526,Build 2.573.7326,Build 2.573.7626,Build 2.573.7713.2
Issue type : kbbug
Solution Type : kbpending
=============================================================================