Feedback
Did this article resolve your question/issue?

   

Article

Unexpected String Data Right Truncated when using DATA_AT_EXEC

Information

 
TitleUnexpected String Data Right Truncated when using DATA_AT_EXEC
URL Name3546
Article Number000121848
EnvironmentProduct: Connect/Connect64 for ODBC, Progress DataDirect for ODBC
Version: All supported versions
OS: All supported platforms
Database: All supported databases
Application: All supported applications
Question/Problem Description
Many ODBC drivers allow the ColumnSize of a parameter bound with the DATA_AT_EXEC option to be specified as zero.  With the DataDirect drivers, this will result in the truncation error.
Steps to ReproduceSteps to Reproduce:
- Create a table with a long character field.
CREATE TABLE LONGTAB (COL1 LONG)
- Prepare an INSERT statement with a parameter marker in the position for the long character field.
INSERT INTO LONGTAB VALUES (?)
- Bind the parameter with the DATA_AT_EXEC option, and specify 0 for the ColumnSize argument.
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, p_buffer, sizeof(buffer), p_strlen);
- Execute the statement.
SQLExecute(hstmt);

The error will be returned by the SQLExecute() call.
Clarifying Information
Error MessageSQLState: 22001, Native Error: 0
[DataDirect][ODBC Oracle driver]String data, right truncated. Error in parameter 1.
Defect Number
Enhancement Number
Cause
Truncating the data supplied and issuing the error is correct behavior. 
Resolution

To correct the situation, set the ColumnSize argument in the SQLBindParameter call to the actual maximum size of the column.  For Oracle's LONG column type for instance, this value should be 2,147,483,647.

Workaround
Notes
Last Modified Date10/18/2018 8:40 PM
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.