home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Latest versionsfixlist
11.1.0.7 FixList
10.5.0.9 FixList
10.1.0.6 FixList
9.8.0.5 FixList
9.7.0.11 FixList
9.5.0.10 FixList
9.1.0.12 FixList
Have problems? - contact us.
Register for free anmeldung-x26
Contact form kontakt-x26

DB2 - Problem description

Problem IC76989 Status: Closed

SQL%ROWCOUNT not updated after a PL/SQL EXECUTE IMMEDIATE statement

product:
DB2 FOR LUW / DB2FORLUW / 970 - DB2
Problem description:
In PL/SQL code, the default cursor attribute SQL%ROWCOUNT 
may not be updated after an EXECUTE IMMEDIATE statement. 
If your EXECUTE IMMEDIATE statement performs an UPDATE, 
DELETE, INSERT, or SELECT INTO, SQL%ROWCOUNT will not be 
updated unless your EXECUTE IMMEDIATE statement contains 
a BULK COLLECT clause. 
 
This can be demonstrated using the following test case: 
 
---- 
connect to test; 
 
set sqlcompat plsql; 
 
drop table T1; 
drop table T2; 
 
create table T1(C1 integer); 
 
insert into T1 values 
  2, 3, 5, 7, 11, 13, 17, 19, 23; 
 
create table T2(C1 integer); 
 
create or replace procedure test(r1 out bigint, r2 out bigint) 
as 
begin 
  insert into T2(C1) 
    select C1 from T1 where C1 < 6; -- 3 rows 
  r1 := SQL%ROWCOUNT; 
 
  execute immediate 
    'insert into T2(C1) select C1 from T1 where C1 < 3'; -- 1 
row 
  r2 := SQL%ROWCOUNT; 
end; 
/ 
 
call test(?, ?); 
 
connect reset; 
terminate; 
---- 
 
call test(?, ?) 
 
  Value of output parameters 
  -------------------------- 
  Parameter Name  : R1 
  Parameter Value : 3 
 
  Parameter Name  : R2 
  Parameter Value : 3 
 
  Return Status = 0 
 
The expected result in this case should be R1=3, but 
R2=1.
Problem Summary:
**************************************************************** 
* USERS AFFECTED:                                              * 
* none                                                         * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* SQL%ROWCOUNT is not updated after a PL/SQL EXECUTE           * 
* IMMEDIATE statement; please see the Error Description        * 
* for more details.                                            * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 Version 9.7 Fix Pack 5.                       * 
****************************************************************
Local Fix:
available fix packs:
DB2 Version 9.7 Fix Pack 5 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 6 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 7 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 8 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 10 for Linux, UNIX, and Windows

Solution
This problem is fixed in DB2 Version 9.7 Fix Pack 5.
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
15.06.2011
27.02.2012
27.02.2012
Problem solved at the following versions (IBM BugInfos)
9.7.FP5
Problem solved according to the fixlist(s) of the following version(s)
9.7.0.5 FixList