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 | |
| 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 |
|