The ODBC Provider returns zero for precision and scale when these values do not apply. These values are incorrect and should be ~0 (bitwise NOT 0).
If the consumer doesn't allocate enough space, a stored procedure that returns a variable-length parameter will not detect the truncation that might have occurred. Instead of returning S_OK and setting the status to DBSTATUS_S_TRUNCATED, the ODBC Provider will return DB_S_ERRORSOCCURRED and set the status to DBSTATUS_S_OK.
The data type returned in ICommandWithParameters::GetParameterInfo should be considered without regard to sign. For example, if a database server is expected to return DBTYPE_I2, the ODBC Provider can return DBTYPE_UI2; this ambiguity occurs because the underlying ODBC function SQLDescribeParam does not return the sign of the data type. In addition, the following flags are not set, because the ODBC Provider has no mechanism to obtain the status from the ODBC driver with SQLDescribeParam:
The last two of the above flags can be set for stored procedures against SQL Server.
If the ODBC driver returns SQL_NULLABLE_UNKNOWN for a parameter, the ODBC Provider will return DBPARAMFLAGS_ISNULLABLE for that parameter.
This topic is a part of: