DB2 - Problembeschreibung
| Problem IC63087 | Status: Geschlossen |
Syntax error while parsing big call statements having multiple escape clauses | |
| Produkt: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
| Problembeschreibung: | |
CLI is not parsing the escape clauses correctly for the big call
statements which is having multiple escape clauses.
For example:
From the DB2 Command Window:
db2 "create table abc.test(a int)"
db2 "CREATE PROCEDURE insertDataA( IN a INT) BEGIN INSERT INTO
abc.test VALUES (a); end"
db2 "CALL insertDataA(case when month('10-10-2008') = 4 then
month('10-10-2008') else month ('10-10-2008') - 1 end)"
Return Status = 0
db2 "select * from abc.test"
A
-----------
9
1 record(s) selected.
In the CLI application:
We need to use the escape clauses as below.
"{CALL insertDataA(case when {fn month('10-10-2008')} = 4 then
{fn month('10-10-2008')} else {fn month ('10-10-2008')} - 1
end)}"
However, it failed with the following error message.
SQL0104N An unexpected token "then" was found following
"E('2008-10-10')) = 4". Expected tokens may include: "THEN
<result>". SQLSTATE=42601 | |
| Problem-Zusammenfassung: | |
****************************************************************
* USERS AFFECTED: *
* ALL *
****************************************************************
* PROBLEM DESCRIPTION: *
* CLI is not parsing the escape clauses correctly for the big *
* call *
* statements which is having multiple escape clauses. *
* *
* *
* *
* For example: *
* *
* *
* *
* From the DB2 Command Window: *
* *
* *
* *
* db2 "create table abc.test(a int)" *
* *
* *
* *
* db2 "CREATE PROCEDURE insertDataA( IN a INT) BEGIN INSERT *
* INTO *
* abc.test VALUES (a); end" *
* *
* *
* *
* db2 "CALL insertDataA(case when month('10-10-2008') = 4 then *
* *
* month('10-10-2008') else month ('10-10-2008') - 1 end)" *
* *
* *
* *
* Return Status = 0 *
* *
* *
* *
* db2 "select * from abc.test" *
* *
* *
* *
* A *
* *
* ----------- *
* *
* 9 *
* *
* *
* *
* 1 record(s) selected. *
* *
* *
* *
* *
* *
* In the CLI application: *
* *
* *
* *
* We need to use the escape clauses as below. *
* *
* *
* *
* "{CALL insertDataA(case when {fn month('10-10-2008')} = 4 *
* then *
* {fn month('10-10-2008')} else {fn month ('10-10-2008')} - 1 *
* *
* end)}" *
* *
* *
* *
* However, it failed with the following error message. *
* *
* *
* *
* SQL0104N An unexpected token "then" was found following *
* *
* "E('2008-10-10')) = 4". Expected tokens may include: "THEN *
* *
* <result>". SQLSTATE=42601 *
****************************************************************
* RECOMMENDATION: *
* Upgrade to DB2 Version 9.7 Fix Pack 1. *
**************************************************************** | |
| Local-Fix: | |
n/a | |
| verfügbare FixPacks: | |
DB2 Version 9.7 Fix Pack 1 for Linux, UNIX, and Windows | |
| Lösung | |
Problem was first fixed in Version 9.7 Fix Pack 1. | |
| Workaround | |
keiner bekannt / siehe Local-Fix | |
| Weitere Daten | |
Datum - Problem gemeldet : Datum - Problem geschlossen : Datum - der letzten Änderung: | 11.09.2009 25.01.2010 25.01.2010 |
| Problem behoben ab folgender Versionen (IBM BugInfos) | |
9.7.FP1 | |
| Problem behoben lt. FixList in der Version | |
| 9.7.0.1 |
|