> Hello,
>
> I'm having a problem deleting or updating table rows using the "where current of
> cursor" option.
>
> Our environment consists of Microfocus cobol 2.2, UnixODBC 2.2.6 and SAPDB 7.3.0.40
> all running on a single IBM RS/6000 with AIX 4.3.3
>
> My test program attempts to delete a row where current of cursor position but gets
> an error stating unknown result table. I tried an update statement instead of
> delete, but that also fails with the same error. I also tried compiling the test
> program on a win2k pc using the 7.04.03.00 ODBC driver; same error. Any help you
> can provide is greatly appreciated.
>
> Thanks,
> -Jim
>
>
> Test Program:
>
> EXEC SQL CONNECT 'ADMIN' IDENTIFIED BY 'PASSWORD' USING 'ARMTEST' END-EXEC.
>
> EXEC SQL
> DECLARE nxc1 CURSOR FOR
> select city, state, zip
> from admin.a_test_tbl
> where state = 'PA'
> for update of city
> END-EXEC.
>
> EXEC SQL OPEN nxc1 END-EXEC.
>
> EXEC SQL fetch nxc1 into :city, :state, :zipcode END-EXEC.
>
> EXEC SQL
> delete from admin.a_test_tbl
> where current of nxc1
> END-EXEC.
>
> The following error message is returned here.
> [unixODBC][SAP AG][LIBSQLOD SO][SAP DB]General error;-4000 POS(48) Unknown result
> table.
>
>
> EXEC SQL DISCONNECT CURRENT END-EXEC.
>
>
> ODBC Trace:
>
<<MFSQLTRACE.txt>>
[ODBC][20742][SQLSetConnectOption.c][255]
Entry:
Connection = 2009d938
Option = SQL_ATTR_ODBC_CURSORS
Value = 0
[ODBC][20742][SQLDriverConnect.c][646]
Entry:
Connection = 2009d938
Window Hdl = 0
Str In = [DSN=ARMTEST;UID=ADMIN;PWD=********][length = 34]
Str Out = 2ff1ed6c
Str Out Max = 255
Str Out Ptr = 2ff1dbfc
Completion = 0
UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2'
[ODBC][20742][SQLDriverConnect.c][1413]
Exit:[SQL_SUCCESS]
Connection Out
[DSN=ARMTEST;UID=ADMIN;PWD=PASSWORD;SERVERDB=ARMTEST;SERVERNODE=l...]
[ODBC][20742][SQLGetFunctions.c][140]
Entry:
Connection = 2009d938
Id = 0
Supported = 201024cc
[ODBC][20742][SQLGetFunctions.c][177]
Exit:[SQL_SUCCESS]
Supported = 201024cc -> 0
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_TXN_CAPABLE (46)
Info Value = 2ff1db9a
Buffer Length = 2
StrLen = 2ff1db98
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLSetConnectOption.c][255]
Entry:
Connection = 2009d938
Option = SQL_ATTR_AUTOCOMMIT
Value = 0
[ODBC][20742][SQLSetConnectOption.c][534]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_SCROLL_OPTIONS (44)
Info Value = 201024c4
Buffer Length = 4
StrLen = 2ff1db98
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_SCROLL_CONCURRENCY (43)
Info Value = 201024c8
Buffer Length = 4
StrLen = 2ff1db98
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_DBMS_NAME (17)
Info Value = 2ff1dac8
Buffer Length = 64
StrLen = 2ff1dab8
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_DBMS_VER (18)
Info Value = 2ff1db08
Buffer Length = 64
StrLen = 2ff1daba
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLAllocHandle.c][509]
Entry:
Handle Type = 3
Input Handle = 2009d938
[ODBC][20742][SQLAllocHandle.c][889]
Exit:[SQL_SUCCESS]
Output Handle = 201025a8
[ODBC][20742][SQLGetTypeInfo.c][153]
Entry:
Statement = 201025a8
Data Type = SQL_INTEGER
[ODBC][20742][SQLGetTypeInfo.c][308]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFetch.c][151]
Entry:
Statement = 201025a8
[ODBC][20742][SQLFetch.c][343]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 201025a8
Option = 0
[ODBC][20742][SQLFreeStmt.c][246]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetTypeInfo.c][153]
Entry:
Statement = 201025a8
Data Type = SQL_BIGINT
[ODBC][20742][SQLGetTypeInfo.c][308]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFetch.c][151]
Entry:
Statement = 201025a8
[ODBC][20742][SQLFetch.c][343]
Exit:[SQL_NO_DATA]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 201025a8
Option = 0
[ODBC][20742][SQLFreeStmt.c][246]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetTypeInfo.c][153]
Entry:
Statement = 201025a8
Data Type = SQL_CHAR
[ODBC][20742][SQLGetTypeInfo.c][308]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLBindCol.c][158]
Entry:
Statement = 201025a8
Column Number = 3
Target Type = -18 SQL_C_ULONG
Target Value = 2ff1dac4
Buffer Length = 4
StrLen Or Ind = 2ff1dac0
[ODBC][20742][SQLBindCol.c][250]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFetch.c][151]
Entry:
Statement = 201025a8
[ODBC][20742][SQLFetch.c][343]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 201025a8
Option = 0
[ODBC][20742][SQLFreeStmt.c][246]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetTypeInfo.c][153]
Entry:
Statement = 201025a8
Data Type = SQL_VARCHAR
[ODBC][20742][SQLGetTypeInfo.c][308]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLBindCol.c][158]
Entry:
Statement = 201025a8
Column Number = 3
Target Type = -18 SQL_C_ULONG
Target Value = 2ff1dac4
Buffer Length = 4
StrLen Or Ind = 2ff1dac0
[ODBC][20742][SQLBindCol.c][250]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFetch.c][151]
Entry:
Statement = 201025a8
[ODBC][20742][SQLFetch.c][343]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 201025a8
Option = 0
[ODBC][20742][SQLFreeStmt.c][246]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetTypeInfo.c][153]
Entry:
Statement = 201025a8
Data Type = SQL_BINARY
[ODBC][20742][SQLGetTypeInfo.c][308]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLBindCol.c][158]
Entry:
Statement = 201025a8
Column Number = 3
Target Type = -18 SQL_C_ULONG
Target Value = 2ff1dac4
Buffer Length = 4
StrLen Or Ind = 2ff1dac0
[ODBC][20742][SQLBindCol.c][250]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFetch.c][151]
Entry:
Statement = 201025a8
[ODBC][20742][SQLFetch.c][343]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 201025a8
Option = 0
[ODBC][20742][SQLFreeStmt.c][246]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetTypeInfo.c][153]
Entry:
Statement = 201025a8
Data Type = SQL_VARBINARY
[ODBC][20742][SQLGetTypeInfo.c][308]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLBindCol.c][158]
Entry:
Statement = 201025a8
Column Number = 3
Target Type = -18 SQL_C_ULONG
Target Value = 2ff1dac4
Buffer Length = 4
StrLen Or Ind = 2ff1dac0
[ODBC][20742][SQLBindCol.c][250]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFetch.c][151]
Entry:
Statement = 201025a8
[ODBC][20742][SQLFetch.c][343]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 201025a8
Option = 0
[ODBC][20742][SQLFreeStmt.c][246]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 201025a8
Option = 1
[ODBC][20742][SQLFreeHandle.c][362]
Entry:
Handle Type = 3
Input Handle = 201025a8
[ODBC][20742][SQLFreeHandle.c][463]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_MAX_CONCURRENT_ACTIVITIES (1)
Info Value = 201024a4
Buffer Length = 2
StrLen = 2ff1dbfe
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_DBMS_NAME (17)
Info Value = 2ff1dc2c
Buffer Length = 64
StrLen = 2ff1dc00
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_CURSOR_COMMIT_BEHAVIOR (23)
Info Value = 201024a0
Buffer Length = 2
StrLen = 2ff1dbfe
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_CURSOR_ROLLBACK_BEHAVIOR (24)
Info Value = 201024a2
Buffer Length = 2
StrLen = 2ff1dbfe
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLAllocHandle.c][509]
Entry:
Handle Type = 3
Input Handle = 2009d938
[ODBC][20742][SQLAllocHandle.c][889]
Exit:[SQL_SUCCESS]
Output Handle = 20102818
[ODBC][20742][SQLSetStmtOption.c][167]
Entry:
Statement = 20102818
Option = SQL_ATTR_CONCURRENCY
Value = 2
[ODBC][20742][SQLSetStmtOption.c][375]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLSetStmtOption.c][167]
Entry:
Statement = 20102818
Option = SQL_ATTR_CURSOR_TYPE
Value = 2
[ODBC][20742][SQLSetStmtOption.c][375]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLSetStmtAttr.c][236]
Entry:
Statement = 20102818
Attribute = SQL_ATTR_ROW_ARRAY_SIZE
Value = 1
StrLen = 0
[ODBC][20742][SQLSetStmtAttr.c][685]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLSetStmtOption.c][167]
Entry:
Statement = 20102818
Option = SQL_ATTR_CONCURRENCY
Value = 2
[ODBC][20742][SQLSetStmtOption.c][375]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLSetCursorName.c][153]
Entry:
Statement = 20102818
Cursor name = [nxc1][length = 4]
[ODBC][20742][SQLSetCursorName.c][286]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLPrepare.c][173]
Entry:
Statement = 20102818
SQL = [select city, state, zip from admin.a_test_tbl where
state = 'PA' for update of city][length = 83 (SQL_NTS)]
[ODBC][20742][SQLPrepare.c][374]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLExecute.c][186]
Entry:
Statement = 20102818
[ODBC][20742][SQLExecute.c][341]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLNumResultCols.c][142]
Entry:
Statement = 20102818
Column Count = 20020016
[ODBC][20742][SQLNumResultCols.c][233]
Exit:[SQL_SUCCESS]
Count = 20020016 -> 3
[ODBC][20742][SQLRowCount.c][159]
Entry:
Statement = 20102818
Row Count = 2ff20de4
[ODBC][20742][SQLRowCount.c][234]
Exit:[SQL_SUCCESS]
Row Count = 2ff20de4 -> -1
[ODBC][20742][SQLSetStmtAttr.c][236]
Entry:
Statement = 20102818
Attribute = SQL_ATTR_ROW_ARRAY_SIZE
Value = 1
StrLen = -5
[ODBC][20742][SQLSetStmtAttr.c][685]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 20102818
Option = 2
[ODBC][20742][SQLFreeStmt.c][246]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLDescribeCol.c][224]
Entry:
Statement = 20102818
Column Number = 1
Column Name = 2ff20dc4
Buffer Length = 128
Name Length = 2ff20dbe
Data Type = 2ff20dbc
Column Size = 2ff20dc0
Decimal Digits = 2ff20dba
Nullable = 2ff20db8
[ODBC][20742][SQLDescribeCol.c][487]
Exit:[SQL_SUCCESS]
Column Name = [CITY]
Data Type = 2ff20dbc -> 1
Column Size = 2ff20dc0 -> 20
Decimal Digits = 2ff20dba -> 0
Nullable = 2ff20db8 -> 1
[ODBC][20742][SQLDescribeCol.c][224]
Entry:
Statement = 20102818
Column Number = 2
Column Name = 2ff20dc4
Buffer Length = 128
Name Length = 2ff20dbe
Data Type = 2ff20dbc
Column Size = 2ff20dc0
Decimal Digits = 2ff20dba
Nullable = 2ff20db8
[ODBC][20742][SQLDescribeCol.c][487]
Exit:[SQL_SUCCESS]
Column Name = [STATE]
Data Type = 2ff20dbc -> 1
Column Size = 2ff20dc0 -> 2
Decimal Digits = 2ff20dba -> 0
Nullable = 2ff20db8 -> 1
[ODBC][20742][SQLDescribeCol.c][224]
Entry:
Statement = 20102818
Column Number = 3
Column Name = 2ff20dc4
Buffer Length = 128
Name Length = 2ff20dbe
Data Type = 2ff20dbc
Column Size = 2ff20dc0
Decimal Digits = 2ff20dba
Nullable = 2ff20db8
[ODBC][20742][SQLDescribeCol.c][487]
Exit:[SQL_SUCCESS]
Column Name = [ZIP]
Data Type = 2ff20dbc -> 1
Column Size = 2ff20dc0 -> 5
Decimal Digits = 2ff20dba -> 0
Nullable = 2ff20db8 -> 1
[ODBC][20742][SQLBindCol.c][158]
Entry:
Statement = 20102818
Column Number = 1
Target Type = 1 SQL_CHAR
Target Value = 200c6f0c
Buffer Length = 21
StrLen Or Ind = 200c6f08
[ODBC][20742][SQLBindCol.c][250]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLBindCol.c][158]
Entry:
Statement = 20102818
Column Number = 2
Target Type = 1 SQL_CHAR
Target Value = 200c6f2c
Buffer Length = 3
StrLen Or Ind = 200c6f28
[ODBC][20742][SQLBindCol.c][250]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLBindCol.c][158]
Entry:
Statement = 20102818
Column Number = 3
Target Type = 1 SQL_CHAR
Target Value = 200c6f34
Buffer Length = 6
StrLen Or Ind = 200c6f30
[ODBC][20742][SQLBindCol.c][250]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLSetStmtAttr.c][236]
Entry:
Statement = 20102818
Attribute = SQL_ATTR_ROWS_FETCHED_PTR
Value = 2ff20e5c
StrLen = -4
[ODBC][20742][SQLSetStmtAttr.c][685]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLSetStmtAttr.c][236]
Entry:
Statement = 20102818
Attribute = SQL_ATTR_ROW_STATUS_PTR
Value = 2ff20e58
StrLen = -4
[ODBC][20742][SQLSetStmtAttr.c][685]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFetchScroll.c][145]
Entry:
Statement = 20102818
Fetch Orentation = 1
Fetch Offset = 0
[ODBC][20742][SQLFetchScroll.c][346]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLAllocHandle.c][509]
Entry:
Handle Type = 3
Input Handle = 2009d938
[ODBC][20742][SQLAllocHandle.c][889]
Exit:[SQL_SUCCESS]
Output Handle = 20187588
[ODBC][20742][SQLPrepare.c][173]
Entry:
Statement = 20187588
SQL = [ delete from admin.a_test_tbl where current of
nxc1][length = 51 (SQL_NTS)]
[ODBC][20742][SQLPrepare.c][374]
Exit:[SQL_ERROR]
DIAG [S1000] [SAP AG][LIBSQLOD SO][SAP DB]General error;-4000 POS(48)
Unknown result table.
[ODBC][20742][SQLError.c][342]
Entry:
Statement = 20187588
SQLState = 200b8144
Native = 2ff20d3c
Message Text = 200b814a
Buffer Length = 1023
Text Len Ptr = 2ff20d38
[ODBC][20742][SQLError.c][379]
Exit:[SQL_SUCCESS]
SQLState = S1000
Native = 2ff20d3c -> -4000
Message Text = [[unixODBC][SAP AG][LIBSQLOD SO][SAP DB]General
error;-4000 POS(48) Unknown result table.]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 20187588
Option = 1
[ODBC][20742][SQLFreeHandle.c][362]
Entry:
Handle Type = 3
Input Handle = 20187588
[ODBC][20742][SQLFreeHandle.c][463]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeStmt.c][133]
Entry:
Statement = 20102818
Option = 1
[ODBC][20742][SQLFreeHandle.c][362]
Entry:
Handle Type = 3
Input Handle = 20102818
[ODBC][20742][SQLFreeHandle.c][463]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLTransact.c][163]
Entry:
Environment = 2009cf38
Connection = 2009d938
Completion Type = 1
[ODBC][20742][SQLGetInfo.c][204]
Entry:
Connection = 2009d938
Info Type = SQL_CURSOR_ROLLBACK_BEHAVIOR (24)
Info Value = 2ff20d80
Buffer Length = 2
StrLen = 2ff20d82
[ODBC][20742][SQLGetInfo.c][529]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLTransact.c][332]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLDisconnect.c][193]
Entry:
Connection = 2009d938
[ODBC][20742][SQLDisconnect.c][339]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeHandle.c][263]
Entry:
Handle Type = 2
Input Handle = 2009d938
[ODBC][20742][SQLFreeHandle.c][314]
Exit:[SQL_SUCCESS]
[ODBC][20742][SQLFreeHandle.c][196]
Entry:
Handle Type = 1
Input Handle = 2009cf38