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 IC66641 Status: Geschlossen

JDBC-style '?' parameter markers not supported in PL/SQL
routines

Produkt:
DB2 FOR LUW / DB2FORLUW / 980 - DB2
Problembeschreibung:
If you compile a PL/SQL routine containing a JDBC-style '?' 
parameter marker, DB2 treats the appearance of the question mark 
as a syntax error, SQLCODE -104. 
 
For example, the following procedure dynamically prepares a 
PL/SQL anonymous block with an output parameter marker: 
 
create procedure test(out result varchar(10)) 
begin 
  declare stmt_text varchar(255); 
  declare S1 statement; 
 
  set stmt_text = 
    'declare test varchar(10); begin test := ''ABC''; ? := test; 
end;'; 
 
  prepare S1 from stmt_text; 
  execute S1 into result; 
end % 
 
call test(?) % 
SQL0104N  An unexpected token "?" was found following "declare 
test 
varchar(10); begin test := 'ABC'; ? := test; end;".  Expected 
tokens may 
include:  "SELE".  LINE NUMBER=1.  SQLSTATE=42601
Problem-Zusammenfassung:
**************************************************************** 
* USERS AFFECTED:                                              * 
* Users compiling PL/SQL routine containing a JDBC-style '?'   * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* JDBC-style '?' parameter markers not supported in PL/SQL     * 
* routines                                                     * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to V9.8 FP3                                          * 
****************************************************************
Local-Fix:
As a workaround, submit the dynamic statement in DB2 SQL PL, if 
possible, instead of PL/SQL.  This will allow the use of the '?' 
parameter marker. 
 
Using the error description example, you would change the value 
of STMT_TEXT to use an SQL PL compiled compound statement, like 
this: 
 
create procedure test(out result varchar(10)) 
begin 
  declare stmt_text varchar(255); 
  declare S1 statement; 
 
  set stmt_text = 
    'begin declare test varchar(10); set test = ''ABC''; set ? = 
test; end'; 
 
  prepare S1 from stmt_text; 
  execute S1 into result; 
end % 
 
call sysproc.set_routine_opts('') % 
 
call test(?) % 
 
Value of output parameters 
-------------------------- 
Parameter Name  : RESULT 
Parameter Value : ABC 
 
Return Status = 0
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
Workaround
keiner bekannt / siehe Local-Fix
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
24.02.2010
12.01.2011
12.01.2011
Problem behoben ab folgender Versionen (IBM BugInfos)
9.8.FP3
Problem behoben lt. FixList in der Version
9.8.0.3 FixList