home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Neueste VersionenFixList
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
Haben Sie Probleme? - Kontaktieren Sie uns.
Kostenlos registrieren anmeldung-x26
Kontaktformular kontakt-x26

DB2 - Problembeschreibung

Problem IC77233 Status: Geschlossen

DB2COMMANDBUILDER.DERIVEPARAMETERS() FAILS TO FIND PARAMETERS FOR STORED
PROCEDURES IN IDS ANSI MODE DATABASES

Produkt:
DB2 CONNECT / DB2CONNCT / 970 - DB2
Problembeschreibung:
If you execute the following example code against an IDS Ansi 
mode database, the DB2CommandBuilder.DeriveParameters() call 
does not identify any parameters for stored procedures. 
 
reproducible test: 
 
      static void IDS_DeriveParameter_From_SP() 
      { 
         string connStr = 
"database=ansimodedb;server=system:port;uid=myuid;pwd=mypwd;"; 
         String szProcName = "MYPROC2"; 
 
         try 
         { 
            using (DB2Connection tstConn = new 
DB2Connection(connStr)) 
            { 
               tstConn.Open(); 
               DB2Command tstCmd = tstConn.CreateCommand(); 
               tstCmd.CommandText = "drop procedure " + 
szProcName + " (INT)"; 
               try 
               { 
                  tstCmd.ExecuteNonQuery(); 
               } 
               catch 
               { 
               } 
               tstCmd.CommandText = "create procedure " + 
szProcName + " (parm1 INT) INSERT INTO NMP_INTEGER VALUES 
(parm1); end procedure"; 
               tstCmd.ExecuteNonQuery(); 
 
               tstCmd.CommandText = szProcName; 
               tstCmd.CommandType = CommandType.StoredProcedure; 
 
               DB2CommandBuilder.DeriveParameters(tstCmd); 
               IDataParameterCollection pcol = 
tstCmd.Parameters; 
               IDbDataParameter parm = null; 
               for (Int32 i = 0; i < pcol.Count; i++) 
               { 
                  parm = (IDbDataParameter)pcol[i]; 
                  Console.WriteLine("Param[{0}]", i); 
                  Console.WriteLine("Name={0}", 
parm.ParameterName); 
                  Console.WriteLine("Direction={0}", 
parm.Direction); 
                  Console.WriteLine("Type={0}", parm.DbType); 
               } 
            } 
         } 
         catch (Exception e) 
         { 
            Console.WriteLine(e.ToString()); 
         } 
      }
Problem-Zusammenfassung:
**************************************************************** 
* USERS AFFECTED:                                              * 
* DB2 .NET Provider on Microsoft Windows                       * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* If you execute the following example code against an IDS     * 
* Ansi mode database, the DB2CommandBuilder.DeriveParameters() * 
* call does not identify any parameters for stored procedures. * 
*                                                              * 
* reproducible test:                                           * 
*                                                              * 
*       static void IDS_DeriveParameter_From_SP()              * 
*       {                                                      * 
*          string connStr =                                    * 
* "database=ansimodedb;server=system:port;uid=myuid;pwd=mypwd; * 
* ";                                                           * 
*          String szProcName = "MYPROC2";                      * 
*                                                              * 
*          try                                                 * 
*          {                                                   * 
*             using (DB2Connection tstConn = new               * 
* DB2Connection(connStr))                                      * 
*             {                                                * 
*                tstConn.Open();                               * 
*                DB2Command tstCmd = tstConn.CreateCommand();  * 
*                tstCmd.CommandText = "drop procedure " +      * 
* szProcName + " (INT)";                                       * 
*                try                                           * 
*                {                                             * 
*                   tstCmd.ExecuteNonQuery();                  * 
*                }                                             * 
*                catch                                         * 
*                {                                             * 
*                }                                             * 
*                tstCmd.CommandText = "create procedure " +    * 
* szProcName + " (parm1 INT) INSERT INTO NMP_INTEGER VALUES    * 
* (parm1); end procedure";                                     * 
*                tstCmd.ExecuteNonQuery();                     * 
*                                                              * 
*                tstCmd.CommandText = szProcName;              * 
*                tstCmd.CommandType =                          * 
* CommandType.StoredProcedure;                                 * 
*                                                              * 
*                DB2CommandBuilder.DeriveParameters(tstCmd);   * 
*                IDataParameterCollection pcol =               * 
* tstCmd.Parameters;                                           * 
*                IDbDataParameter parm = null;                 * 
*                for (Int32 i = 0; i < pcol.Count; i++)        * 
*                {                                             * 
*                   parm = (IDbDataParameter)pcol[i];          * 
*                   Console.WriteLine("Param[{0}]", i);        * 
*                   Console.WriteLine("Name={0}",              * 
* parm.ParameterName);                                         * 
*                   Console.WriteLine("Direction={0}",         * 
* parm.Direction);                                             * 
*                   Console.WriteLine("Type={0}",              * 
* parm.DbType);                                                * 
*                }                                             * 
*             }                                                * 
*          }                                                   * 
*          catch (Exception e)                                 * 
*          {                                                   * 
*             Console.WriteLine(e.ToString());                 * 
*          }                                                   * 
*       }                                                      * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 version 9.70.FP5                              * 
****************************************************************
Local-Fix:
The problem is caused by the DB2 .NET Provider improperly 
providing the fully qualified name of the stored procedure 
resulting in the procedure not being found.  As a work around to 
the problem, provide the fully qualified stored procedure name 
in the DB2Command.CommandText property.
verfügbare FixPacks:
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 8 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 10 for Linux, UNIX, and Windows

Lösung
Problem was first fixed in Version 9.7 Fix Pack 5.  At a 
minimum, this fix should be applied on the client.
Workaround
As a work around to the problem, provide the fully qualified 
stored procedure name in the DB2Command.CommandText property.
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
29.06.2011
08.12.2011
08.12.2011
Problem behoben ab folgender Versionen (IBM BugInfos)
9.7.FP5,
9.70.FP5
Problem behoben lt. FixList in der Version
9.7.0.5 FixList