DB2 - Problembeschreibung
| Problem IC61553 | Status: Geschlossen |
COMMAS IN STRING VALUES FOR ARRAYS ARE NOT RESPECTED BY CLP IN THE PARSING | |
| Produkt: | |
DB2 FOR LUW / DB2FORLUW / 950 - DB2 | |
| Problembeschreibung: | |
The following scenario is triggering a -104 error because the
CLP code is not properly handling commas when parsing array
elements.
create TYPE VARIABLE_VALUES AS VARCHAR(1200) ARRAY[100]
create procedure TEST1(
IN VARIABLES VARIABLE_VALUES )
LANGUAGE SQL
BEGIN ATOMIC
END@
When the procedure with a comma in the first array element is
called, getting the following error :
call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a,
d:/tmp/b.b', '${email/sender}= jpparkin@ca.ibm.com' ] )
SQL0104N An unexpected token "ARRAY[" was found following "".
Expected tokens may include: "<name>". SQLSTATE=42601
If the comma out of the string value is left out, then the SQL
works.
call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a d:/tmp/b.b',
'${email/sender}= jpparkin@ca.ibm.com' ] )
Return Status = 0 | |
| Problem-Zusammenfassung: | |
****************************************************************
* USERS AFFECTED: *
* All db2 users which are using array element values with *
* comma as a part inside stored procedure. *
****************************************************************
* PROBLEM DESCRIPTION: *
* The following scenario is triggering a -104 error because *
* the *
* CLP code is not properly handling commas when parsing array *
* *
* elements. *
* *
* create TYPE VARIABLE_VALUES AS VARCHAR(1200) ARRAY[100] *
* *
* create procedure TEST1( *
* IN VARIABLES VARIABLE_VALUES ) *
* LANGUAGE SQL *
* *
* BEGIN ATOMIC *
* END@ *
* *
* When the procedure with a comma in the first array element *
* is *
* called, getting the following error : *
* *
* call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a, *
* d:/tmp/b.b', '${email/sender}= jpparkin@ca.ibm.com' ] ) *
* *
* SQL0104N An unexpected token "ARRAY[" was found following *
* "". *
* Expected tokens may include: "<name>". SQLSTATE=42601 *
* *
* If the comma out of the string value is left out, then the *
* SQL *
* works. *
* *
* call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a *
* d:/tmp/b.b','${email/sender}= jpparkin@ca.ibm.com' ] ) *
* *
* Return Status = 0 *
****************************************************************
* RECOMMENDATION: *
* Upgrade to db2_v95fp5 or db2_v97fp1 or heigher releases. *
**************************************************************** | |
| Local-Fix: | |
Possible workaround:
CREATE PROCEDURE caller()
BEGIN
call TEST1( ARRAY[ '${email/attachments}=d:/tmp/a.a,
d:/tmp/b.b', '${email/sender}= jpparkin@ca.ibm.com' ] );
END
CALL caller() | |
| verfügbare FixPacks: | |
DB2 Version 9.5 Fix Pack 5 for Linux, UNIX, and Windows | |
| Lösung | |
db2_v95fp5 contains the fix of this issue. After this fix, user could use comma under string elements of array inside a stored procedure. The sql command will execute successfully. | |
| Workaround | |
keiner bekannt / siehe Local-Fix | |
| Bug-Verfolgung | |
Vorgänger : APAR is sysrouted TO one or more of the following: IC61662 Nachfolger : | |
| Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 18.06.2009 22.12.2009 22.12.2009 |
| Problem behoben ab folgender Versionen (IBM BugInfos) | |
| Problem behoben lt. FixList in der Version | |
| 9.5.0.5 |
|