DB2 - Problem description
Problem IC66110 | Status: Closed |
JDBC-style '?' parameter markers not supported in PL/SQL routines | |
product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
Problem description: | |
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 Summary: | |
**************************************************************** * 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 | |
available fix packs: | |
DB2 Version 9.7 Fix Pack 2 for Linux, UNIX, and Windows | |
Solution | |
Workaround | |
not known / see Local fix | |
BUG-Tracking | |
forerunner : APAR is sysrouted TO one or more of the following: IC66641 follow-up : | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 05.02.2010 13.05.2010 13.05.2010 |
Problem solved at the following versions (IBM BugInfos) | |
9.7.FP2 | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.7.0.2 |