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

.NET STORED PROCEDURES AND UDF'S WITH DATE TYPE INPUT PARAMETER CAUSE
SQL04302N IN DATE TYPE AS TIMESTAMP(0) MODE

product:
DB2 FOR LUW / DB2FORLUW / 970 - DB2
Problem description:
Platform: Windows 
 
The Oracle Compatibility Feature DATE data type as Timestamp(0) 
is enabled (DB2_COMPATIBILITY_VECTOR=ORA or 040) and a .NET 
StoredProcedure or UDF with a DATE data type input parameter is 
     invoked.  You receive a SQL04302N error with the token 
"String  was not recognized as a valid DateTime". 
 
       Example procedure definition: 
      CREATE PROCEDURE test.clrdate 
      ( 
    IN in1_DT DATE 
   ) 
  NOT DETERMINISTIC 
 NULL CALL 
OLD SAVEPOINT LEVEL 
EXECUTION CONTROL FILEWRITE 
LANGUAGE CLR 
EXTERNAL NAME 'testdate.dll:test.date!testdateclr' 
FENCED 
EXTERNAL ACTION 
INHERIT SPECIAL REGISTERS 
PARAMETER STYLE SIMPLE CALL WITH NULLS 
NO DBINFO@ 
 
Example Call: 
db2 call test.clrdate('1761-09-14 03:09:29.0') 
SQL04302N Exception "String was not recognized as a valid 
DateTime" 
 
The db2diag.log contains the following entries: 
2009-07-15-11.17.36.421000+540 I1511441F525   LEVEL: Error 
PID : 2544    TID : 2444  PROC : 
db2fmp64.exe 
INSTANCE: DB2       NODE : 000 
EDUID : 2444 
FUNCTION: DB2 UDB, DB2 .NET Routine Infrastructure, 
sqlecMethodManager.InvokeMet 
hod, probe:10 
MESSAGE : Class test.date, function testdateclr, parameter 0 
caused exception 
 String was not recognized as a valid DateTime. 
DATA #1 : Hexdump, 4 bytes 
0x00000000061A7648 : 0701 0000 
.... 
 
2009-07-15-11.17.36.421000+540 I1511968F787   LEVEL: Error 
PID : 2544    TID : 2444  PROC : 
db2fmp64.exe 
INSTANCE: DB2       NODE : 000 
EDUID : 2444 
FUNCTION: DB2 UDB, DB2 .NET Routine Infrastructure, 
sqlecRoutineLoaderClass.sqle 
cRunDotNetRo, probe:10 
DATA #1 : String, 360 bytes 
System.FormatException: String was not recognized as a valid 
DateTime. 
 at IBM.Data.DB2.Routine.sqlecMethodManager.InvokeMethod() 
at 
IBM.Data.DB2.Routine.sqlecRoutineLoaderClass.sqlecRunDotNetRouti 
ne(IntPtr 
ufob, IntPtr pSqlca, IntPtr nativeThreadID, IntPtr 
invokerSQLSTATE, IntPtr invok 
erMessage, IntPtr scratchpad, IntPtr dbinfo, IntPtr 
processReturn) 
DATA #2 : Hexdump, 4 bytes 
0x00000000061A57D8 : 32EF FFFF 
2...
Problem Summary:
**************************************************************** 
* USERS AFFECTED:                                              * 
* DB2 LUW on Windows with .NET routines using DATE as          * 
* Timestamp(0) as input parameter                              * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* A SQL04302N error with the token "String was not recognized  * 
* as a valid DateTime" is returned when invoking a LANGUAGE    * 
* CLR Stored Procedure or UDF which has been cataloged with an * 
* input parameter whose data type is DATE.                     * 
*                                                              * 
* Example procedure definition:                                * 
* CREATE PROCEDURE test.clrdate                                * 
*  (                                                           * 
* IN in1_DT DATE                                               * 
* )                                                            * 
* NOT DETERMINISTIC                                            * 
* NULL CALL                                                    * 
* OLD SAVEPOINT LEVEL                                          * 
* EXECUTION CONTROL FILEWRITE                                  * 
* LANGUAGE CLR                                                 * 
* EXTERNAL NAME 'testdate.dll:test.date!testdateclr'           * 
* FENCED                                                       * 
* EXTERNAL ACTION                                              * 
* INHERIT SPECIAL REGISTERS                                    * 
* PARAMETER STYLE SIMPLE CALL WITH NULLS                       * 
* NO DBINFO@                                                   * 
*                                                              * 
* Example Call:                                                * 
* db2 call test.clrdate('1761-09-14 03:09:29.0')               * 
* SQL04302N Exception "String was not recognized as a valid    * 
*                                                              * 
* DateTime"                                                    * 
*                                                              * 
* The db2diag.log contains the following entries:              * 
* 2009-07-15-11.17.36.421000+540 I1511441F525   LEVEL: Error   * 
* PID : 2544         TID  : 2444   PROC :                      * 
* db2fmp64.exe                                                 * 
* INSTANCE: DB2         NODE : 000                             * 
* EDUID : 2444                                                 * 
* FUNCTION: DB2 UDB, DB2 .NET Routine Infrastructure,          * 
* sqlecMethodManager.InvokeMet                                 * 
* hod, probe:10                                                * 
* MESSAGE : Class test.date, function testdateclr, parameter 0 * 
*                                                              * 
* caused exception                                             * 
*   String was not recognized as a valid DateTime.             * 
* DATA #1 : Hexdump, 4 bytes                                   * 
* 0x00000000061A7648 : 0701 0000                               * 
* ....                                                         * 
*                                                              * 
* 2009-07-15-11.17.36.421000+540 I1511968F787   LEVEL: Error   * 
* PID : 2544         TID  : 2444   PROC :                      * 
* db2fmp64.exe                                                 * 
* INSTANCE: DB2         NODE : 000                             * 
* EDUID : 2444                                                 * 
* FUNCTION: DB2 UDB, DB2 .NET Routine Infrastructure,          * 
* sqlecRoutineLoaderClass.sqle                                 * 
* cRunDotNetRo, probe:10                                       * 
* DATA #1 : String, 360 bytes                                  * 
* System.FormatException: String was not recognized as a valid * 
*                                                              * 
* DateTime.                                                    * 
*   at IBM.Data.DB2.Routine.sqlecMethodManager.InvokeMethod()  * 
*  at                                                          * 
* IBM.Data.DB2.Routine.sqlecRoutineLoaderClass.sqlecRunDotNetRou 
* ne(IntPtr                                                    * 
* ufob, IntPtr pSqlca, IntPtr nativeThreadID, IntPtr           * 
* invokerSQLSTATE, IntPtr invok                                * 
* erMessage, IntPtr scratchpad, IntPtr dbinfo, IntPtr          * 
* processReturn)                                               * 
* DATA #2 : Hexdump, 4 bytes                                   * 
* 0x00000000061A57D8 : 32EF FFFF                               * 
* 2...                                                         * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Install V97 fp1                                              * 
****************************************************************
Local Fix:
Change the type of the input parameter in the procedure 
definition from DATE to TIMESTAMP(0).
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 7 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 6 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
Fixpack 1 for DB2 V9.7 includes the fix for this issue.  When 
invoking a LANGUAGE CLR Stored Procedure or UDF with an input 
parameter of data type DATE the procedure will execute 
successfully.
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
05.08.2009
29.12.2009
29.12.2009
Problem solved at the following versions (IBM BugInfos)
9.7.,
9.7.FP1
Problem solved according to the fixlist(s) of the following version(s)
9.7.0.1 FixList