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 IC72816 Status: Closed

TO_DATE SCALAR FUNCTION IN IF STATEMENT FAILS WITH SQL20448N

product:
DB2 FOR LUW / DB2FORLUW / 980 - DB2
Problem description:
The TO_DATE function - or its synonym TIMESTAMP_FORMAT - may 
return SQL20448N when used within an IF or ELSE statement.  The 
TO_DATE function is executed even though the condition is false. 
 For example: 
 
IF option = 'TIMESTAMP' THEN 
  SET result = TO_DATE( input, 'YYYY-MM-DD-HH24-MI-SS'); 
END IF; 
 
Regardless of the value of "option", the TO_DATE expression is 
evaluated using the value "input".  This may not be noticed if 
the evaluation is successful, however, if "input" is not a valid 
timestamp SQL20448N is returned.  If an error does not occur, 
the result is discarded, it is not assigned to "result". 
 
This only occurs in Compound SQL (inlined).
Problem Summary:
**************************************************************** 
* USERS AFFECTED:                                              * 
* DB2 UDB Version 9.8                                          * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* The TO_DATE function - or its synonym TIMESTAMP_FORMAT - may * 
* return SQL20448N when used within an IF or ELSE statement.   * 
* The TO_DATE function is executed even though the condition   * 
* is false.                                                    * 
* For example:                                                 * 
*                                                              * 
* IF option = 'TIMESTAMP' THEN                                 * 
* SET result = TO_DATE( input, 'YYYY-MM-DD-HH24-MI-SS');       * 
* END IF;                                                      * 
*                                                              * 
* Regardless of the value of "option", the TO_DATE expression  * 
* is evaluated using the value "input".  This may not be       * 
* noticed if the evaluation is successful, however, if "input" * 
* is not a valid timestamp SQL20448N is returned.  If an error * 
* does not occur, the result is discarded, it is not assigned  * 
* to "result".                                                 * 
*                                                              * 
* This only occurs in Compound SQL (inlined).                  * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 UDB next release.                             * 
****************************************************************
Local Fix:
Ensure the TO_DATE function arguments are valid regardless of 
the condition.  A simple way to do this with the example above 
is to use another variable that is initialized with a valid 
timestamp string: 
 
DECLARE to_date_input VARCHAR(14) DEFAULT '20081231233015'; 
... 
IF option = 'TIMESTAMP' THEN 
  SET to_date_input = input; 
  SET result = TO_DATE( to_date_input, 'YYYY-MM-DD-HH24-MI-SS'); 
END IF;
available fix packs:
DB2 Version 9.8 Fix Pack 4 for AIX and Linux
DB2 Version 9.8 Fix Pack 5 for AIX and Linux

Solution
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
25.11.2010
05.08.2011
05.08.2011
Problem solved at the following versions (IBM BugInfos)
Problem solved according to the fixlist(s) of the following version(s)
9.8.0.4 FixList