Article ID: 190934
Article Last Modified on 10/3/2003
CREATE TABLE zeric (CNTR NUMBER(4),
FNAME VARCHAR2(10),
LNAME VARCHAR2(20));
CREATE INDEX zeric_cntr ON zeric (CNTR);
INSERT INTO zeric VALUES (1, 'Eric', 'Burgess');
The above code is written for SQL*Plus. If you want to do this in ODBCTest, remove the semicolons.
1. Full Connect:
Full Connect(Use Driver)
2. SQLSetStmtAttr:
Attribute = SQL_ATTR_CURSOR_TYPE=6
ValuePtr = SQL_CURSOR_KEYSET_DRIVEN=1
3. SQLSetStmtAttr:
Attribute = SQL_ATTR_CONCURRENCY=7
ValuePtr = SQL_CONCUR_VALUES=4
4. Type the following SQL Statement in the Input window. Make sure to use
the double quotes around the field names.
SELECT "CNTR", "FNAME", "LNAME" FROM "ZERIC"
5. Call SQLPrepare.
6. Call SQLExecute.
7. Select Bind Col All.
8. Select SQLExtendedFetch:
FetchOrientation = SQL_FETCH_NEXT=1
FetchOffset = 1
9. Select SQLExtendedFetch:
FetchOrientation = SQL_FETCH_FIRST=2
FetchOffset = 1
10. Change the FNAME field contents. This should be done through the grid
that opens.
11. Call SQLSetPos:
Operation = SQL_UPDATE=2,
LockType = SQL_LOCK_NO_CHANGE=0
SQLSetPos call causes the error.
NOTE: The classes in Visual C++ MFC ODBC call these ODBC APIs when they attempt to update a record, and that causes the same error message.
178044 PRB: Oracle Errors When Using Query-Based Updates Through ADO
Keywords: kbbug kbfix kboracle kbsdkdataac200fix kbdatabase kbdriver KB190934