home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Neueste VersionenFixList
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
Haben Sie Probleme? - Kontaktieren Sie uns.
Kostenlos registrieren anmeldung-x26
Kontaktformular kontakt-x26

DB2 - Problembeschreibung

Problem IC67895 Status: Geschlossen

SQL0502N(CURSOR ALREADY OPEN) WHEN TWO FOR LOOPS USE THE SAME CURSOR IN
THE SAME PL/SQL ROUTINE

Produkt:
DB2 FOR LUW / DB2FORLUW / 980 - DB2
Problembeschreibung:
If your PL/SQL routine contains two or more FOR loops that use 
the same cursor name, error SQL0502N may be reported by DB2 when 
the second FOR loop is executed.  For example: 
 
set sqlcompat plsql; 
set serveroutput on; 
 
create table test1(col1 varchar2(10)); 
insert into test1 values 'AAA', 'BBB', 'CCC'; 
 
create or replace procedure test 
is 
  cursor C1 is select COL1 from TEST1; 
begin 
  for rec in C1 
  loop 
    dbms_output.put_line(rec.col1); 
  end loop; 
 
  for rec in C1 
  loop 
    dbms_output.put_line(rec.col1); 
  end loop; 
end; 
/ 
 
begin 
  test; 
end; 
/ 
 
DB21034E  The command was processed as an SQL statement because 
it was not a valid Command Line Processor command. 
During SQL processing it returned: 
SQL0502N  The cursor specified in an OPEN statement is already 
open. SQLSTATE=24502
Problem-Zusammenfassung:
**************************************************************** 
* USERS AFFECTED:                                              * 
* ALL                                                          * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* If your PL/SQL routine contains two or more FOR loops        * 
* thatusethe same cursor name, error SQL0502N may be           * 
* reportedby DB2 when the second FOR loop is executed.SQL0502N * 
*  The cursor specified in an OPEN statement isalready open.   * 
* SQLSTATE=24502                                               * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to version 9.8 fixpack 3.                            * 
****************************************************************
Local-Fix:
As a workaround, you may use the SELECT form of the FOR loop: 
create or replace procedure test 
is 
begin 
  for rec in (select COL1 from TEST1) 
  loop 
    dbms_output.put_line(rec.col1); 
  end loop; 
 
 
 
 
  for rec in (select COL1 from TEST1) 
  loop 
    dbms_output.put_line(rec.col1); 
  end loop; 
end; 
/ 
 
begin 
  test; 
end; 
/ 
 
DB20000I  The SQL command completed successfully. 
 
AAA 
BBB 
CCC 
AAA 
BBB 
CCC
verfügbare FixPacks:
DB2 Version 9.8 Fix Pack 3 for Linux, UNIX, and Windows
DB2 Version 9.8 Fix Pack 4 for AIX and Linux
DB2 Version 9.8 Fix Pack 5 for AIX and Linux

Lösung
This was first fixed in V98 FP3
Workaround
keiner bekannt / siehe Local-Fix
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
14.04.2010
10.01.2011
10.01.2011
Problem behoben ab folgender Versionen (IBM BugInfos)
9.8.FP3
Problem behoben lt. FixList in der Version
9.8.0.3 FixList