DB2 - Problembeschreibung
| Problem IC66110 | Status: Geschlossen |
JDBC-style '?' parameter markers not supported in PL/SQL routines | |
| Produkt: | |
DB2 FOR LUW / DB2FORLUW / 970 - 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: * * ALL * **************************************************************** * PROBLEM DESCRIPTION: * * JDBC-style '?' parameter markers not supported in PL/SQL * * routines * **************************************************************** * RECOMMENDATION: * * Upgrade to V97FP2 * **************************************************************** | |
| 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.7 Fix Pack 2 for Linux, UNIX, and Windows | |
| Lösung | |
| Workaround | |
keiner bekannt / siehe Local-Fix | |
| Bug-Verfolgung | |
Vorgänger : APAR is sysrouted TO one or more of the following: IC66641 Nachfolger : | |
| Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 05.02.2010 13.05.2010 13.05.2010 |
| Problem behoben ab folgender Versionen (IBM BugInfos) | |
9.7.FP2 | |
| Problem behoben lt. FixList in der Version | |
| 9.7.0.2 |
|