DB2 - Problembeschreibung
Problem IT08281 | Status: Geschlossen |
CLI APPLICATION USING CHAINING WITH INSERT BUFFERING MAY GET SQL_SUCCESS BUT SQLROWCOUNT() GIVES 0. | |
Produkt: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
Problembeschreibung: | |
An application that is using CLI insert buffering with chaining to insert the rows more than once on the same statement handle will receive the SQL_SUCCESS when settiing SQL_ATTR_CHAINING_END to end the chain. But SQLRowCount() will return 0 saying no rows inserted. Steps to reproduce problem : ========================== opt echo on opt callerror on quickc 1 1 sample sqlallocstmt 1 1 sqlsetstmtattr 1 SQL_ATTR_INSERT_BUFFERING SQL_ATTR_INSERT_BUFFERING_IGD sqlexecdirect 1 "create table tab1(id char(10) unique not null)" -3 sqlexecdirect 1 "insert into tab1 (id) values ('001')" -3 sqlprepare 1 "insert into tab1 (id) values (?)" SQL_NTS getmem 1 1 SQL_C_CHAR 30 sqlbindparameter 1 1 SQL_PARAM_INPUT SQL_C_CHAR SQL_VARCHAR 30 0 1 sqlsetstmtattr 1 SQL_ATTR_CHAINING_BEGIN 1 updatemem 1 sql_c_char value SQL_NTS "001" sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "001" ### duplicate sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "001" ### duplicate sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "001" ### duplicate sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "001" ### duplicate sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "001" ### duplicate sqlexecute 1 sqlsetstmtattr 1 SQL_ATTR_CHAINING_END 1 sqlrowcount 1 sqlbindparameter 1 1 SQL_PARAM_INPUT SQL_C_CHAR SQL_VARCHAR 30 0 1 updatemem 1 sql_c_char value SQL_NTS "003" sqlexecute 1 sqlbindparameter 1 1 SQL_PARAM_INPUT SQL_C_CHAR SQL_VARCHAR 30 0 1 sqlsetstmtattr 1 SQL_ATTR_CHAINING_BEGIN 1 updatemem 1 sql_c_char value SQL_NTS "002" sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "004" sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "005" sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "006" sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "007" sqlexecute 1 updatemem 1 sql_c_char value SQL_NTS "008" sqlexecute 1 sqlsetstmtattr 1 SQL_ATTR_CHAINING_END 1 sqlrowcount 1 sqltransact 1 1 sql_rollback sqlfreestmt 1 sql_drop killenv 1 In the above case, first SQL_ATTR_CHAINING_END will fail because all the rows are duplicate and returns the SQLRowCount as 0.(Value returned here depends on the number of rows successfully inserted) But during the 2nd chaining all the rows are good rows, so SQL_ATTR_CHAINING_END should receives SQL_SUCCESS with correct row count. Instead SQLRowCount() API is returning 0 or incorrect result. | |
Problem-Zusammenfassung: | |
**************************************************************** * USERS AFFECTED: * * ALL * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 V9.7 FP11 * **************************************************************** | |
Local-Fix: | |
NA | |
Lösung | |
Fixed in DB2 V9.7 FP11 | |
Workaround | |
keiner bekannt / siehe Local-Fix | |
Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 13.04.2015 07.10.2015 07.10.2015 |
Problem behoben ab folgender Versionen (IBM BugInfos) | |
9.7.FP11 | |
Problem behoben lt. FixList in der Version | |
9.7.0.11 |