Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

BUG: Error When Using Table Aliases with Oracle ODBC Driver


View products that this article applies to.

This article was previously published under Q186380

↑ Back to the top


Symptoms

When you try to use table aliases in SELECT statements with the Microsoft Oracle ODBC driver and you are using the Keyset cursor type, you receive the following error:
[Microsoft][ODBC driver for Oracle]Cannot use Keyset-driven cursor on join, with union, intersect or minus or on read only result set"

↑ Back to the top


Cause

When the driver re-writes the SQL statement to send to the Oracle server it doesn't create the correct syntax.

Internally, Oracle returns the following error message:
ORA-00964: table name not in FROM list
In turn, The Microsoft Oracle ODBC driver maps that error message to the message listed in the SYMPTOMS section of this article.

↑ Back to the top


Resolution

The solution depends on the nature of the application. If the application needs to use Keyset cursors, it may not use table aliases. If the application must use table aliases, the cursor type must be changed to FORWARD-ONLY or STATIC.

↑ Back to the top


Status

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.

↑ Back to the top


More information

Steps to Reproduce Behavior using ODBCTest

  1. Make a full connection to an Oracle DataSource. ODBC Behavior is set to 2.0, and Cursor Library is set to "Use Driver".
  2. From the Attr menu select SQLSetStmtAttr.
  3. Set the attribute SQL_ATTR_CURSOR_TYPE=6 to SQL_CURSOR_KEYSET_DRIVEN=1, and then click OK.
  4. Set the attribute SQL_ATTR_CONCURRENCY=7 to SQL_CONCUR_VALUES=4, and then click OK.
  5. Type in the following statement in the "henv" window.
    SELECT * FROM demo.customer myalias
    						
  6. Click on the toolbar button for SQLExecDirect (the button with exclamation point), or select the Stmt menu and chose SQLExecDirect. The error message appears.
NOTE: This error occurs regardless of the program's front end. This error has been reported in Visual Basic and Visual C++.

↑ Back to the top


Keywords: KB186380, kbpending, kboracle, kbdriver, kbdatabase, kbbug

↑ Back to the top

Article Info
Article ID : 186380
Revision : 3
Created on : 12/3/2003
Published on : 12/3/2003
Exists online : False
Views : 320