Microsoft KB Archive/918255

= FIX: Error message when an application calls a DB2 stored procedure after you apply the hotfix from Knowledge Base article 909602: “SQLSTATE: 39004” =

Article ID: 918255

Article Last Modified on 12/4/2007

-

APPLIES TO


 * Microsoft Host Integration Server 2004 Standard Edition
 * Microsoft Host Integration Server 2004 Enterprise Edition

-





SYMPTOMS
When an application uses the Managed Provider for DB2 that is included with Microsoft Host Integration Server 2004 to call a DB2 stored procedure, the call fails. Additionally, you receive an error message that resembles the following:

SQLSTATE: 39004, SQLCODE: -470

The SQLSTATE value indicates that a null value is not permitted for an IN argument or for an INOUT argument.

This problem occurs if the following conditions are true:   The application passes a parameter that is defined as follows to the DB2 stored procedure: TestParam(1).Value =Sample.ID where : Sample.ID = &quot;&quot;;       // There is no space between the quotation marks  You have applied the hotfix that is described in Microsoft Knowledge Base article 909602. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

909602 FIX: The OLE DB Provider for DB2 in Host Integration Server 2004 truncates string (CHAR) data that includes NULL characters when you insert or retrieve data from an IBM DB2 database





CAUSE
This problem occurs because the hotfix that is described in Knowledge Base article 909602 modifies the behavior of the Managed Provider for DB2. Because of the change, a null value is used when a parameter is defined as an empty string. If you have not installed the hotfix that is described in Knowledge Base article 909602, the Managed Provider for DB2 sends an empty string to the DB2 stored procedure for a parameter that is defined as an empty string.



Hotfix information
A supported hotfix is now available from Microsoft. However, this hotfix is intended to correct only the problem that is described in this article. Apply this hotfix only to systems that are experiencing this specific problem. This hotfix might receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next service pack that contains this hotfix.

To resolve this problem, submit a request to Microsoft Online Customer Services to obtain the hotfix. To submit an online request to obtain the hotfix, visit the following Microsoft Web site:

http://go.microsoft.com/?linkid=6294451

Note If additional issues occur or any troubleshooting is required, you might have to create a separate service request. The usual support costs will apply to additional support questions and issues that do not qualify for this specific hotfix. To create a separate service request, visit the following Microsoft Web site:

http://support.microsoft.com/contactus/?ws=support

File information
The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.



WORKAROUND
To work around this problem, use an empty string parameter that is defined as follows: TestParam(1).Value =Sample.ID where : Sample.ID = &quot; &quot;;       // Add a space between the quotation marks



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the &quot;Applies to&quot; section.



MORE INFORMATION
After you apply this hotfix, the Managed Provider for DB2 handles null values and empty string parameters as follows:
 * When you define the parameter type as a string, the Managed Provider for DB2 sends an empty string (&quot;&quot;) to the DB2 database as an empty string VarChar data type.
 * If you have to send a null value to a DB2 database, the Managed Provider for DB2 requires that you use DBNull.Value as the parameter value.
 * When you use null as the parameter value, the Managed Provider for CB2 sends an empty string (&quot;&quot;) to the DB2 database if the parameter type is defined as a string type.



For more information, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates

Keywords: kberrmsg kbfix kbqfe kbcode kbpubtypekc kbhotfixserver KB918255

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.