home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Latest versionsfixlist
11.1.0.7 FixList
10.5.0.9 FixList
10.1.0.6 FixList
9.8.0.5 FixList
9.7.0.11 FixList
9.5.0.10 FixList
9.1.0.12 FixList
Have problems? - contact us.
Register for free anmeldung-x26
Contact form kontakt-x26

DB2 - Problem description

Problem IC63087 Status: Closed

Syntax error while parsing big call statements having multiple escape
clauses

product:
DB2 FOR LUW / DB2FORLUW / 970 - DB2
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
Problem Summary:
**************************************************************** 
* 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
available fix packs:
DB2 Version 9.7 Fix Pack 1 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 2 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 3 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 3a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 4 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 5 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 6 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 7 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 8 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 10 for Linux, UNIX, and Windows

Solution
Problem was first fixed in Version 9.7 Fix Pack 1.
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
11.09.2009
25.01.2010
25.01.2010
Problem solved at the following versions (IBM BugInfos)
9.7.FP1
Problem solved according to the fixlist(s) of the following version(s)
9.7.0.1 FixList