Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

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


View products that this article applies to.

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 = "";        // 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

↑ Back to the top


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.

↑ Back to the top


Resolution

Hotfix information

A supported hotfix is 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 software update that contains this hotfix.

If the hotfix is available for download, there is a "Hotfix download available" section at the top of this Knowledge Base article. If this section does not appear, contact Microsoft Customer Service and Support to obtain the hotfix.

Note If additional issues occur or if 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. For a complete list of Microsoft Customer Service and Support telephone numbers or to create a separate service request, visit the following Microsoft Web site: Note The "Hotfix download available" form displays the languages for which the hotfix is available. If you do not see your language, it is because a hotfix is not available for that language.

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.
Collapse this tableExpand this table
File nameFile versionFile sizeDateTimePlatform
Db2oledb.dll6.0.2035.0487,93615-Jun-200623:50x86
Db2oledb.hNot Applicable24,51615-Jun-200623:55Not Applicable
Ddmstr.dll6.0.2035.044,03215-Jun-200623:50x86
Drdaresync.exe6.0.2035.0337,40815-Jun-200623:50x86
Microsoft.hostintegration.dataaccesslibrary.dll6.0.2035.086,01615-Jun-200623:50x86
Microsoft.hostintegration.dataaccesstool.exe6.0.2035.02,703,36015-Jun-200623:51x86
Microsoft.hostintegration.msdb2client.dll6.0.2035.0114,68815-Jun-200623:50x86
Mseidb2c.dll6.0.2035.071,68015-Jun-200623:50x86
Mseidb2d.dll6.0.2035.0435,20015-Jun-200623:50x86
Mseidrda.dll6.0.2035.0695,80815-Jun-200623:51x86

↑ Back to the top


Workaround

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

↑ Back to the top


Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

↑ Back to the top


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 ("") 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 ("") to the DB2 database if the parameter type is defined as a string type.

↑ Back to the top


Keywords: kbcode, kbfix, kbpubtypekc, kberrmsg, kbqfe, kbhotfixserver, kbautohotfix, KB918255

↑ Back to the top

Article Info
Article ID : 918255
Revision : 5
Created on : 12/4/2007
Published on : 12/4/2007
Exists online : False
Views : 407