在 odbc 驱动程序中将数据类型转换为 BIG_INT

data type conversion to BIG_INT in odbc driver

如何将 SQL_INTEGER 的数据类型转换为 SQL_C_BIGINT?

我有一个 odbc 驱动程序,Power BI 使用它来与数据源交互。 在调用 SQLColAttribute 期间,驱动程序将列类型作为 SIGNED SQL_INTEGER 传递。 但是,当客户端调用 SQLFetchData 时,它期望数据类型为 SQL_C_BIGINT。 所以基本上,我想将 SQL_INTEGER 类型的数据转换为 SQL_C_BIGINT ,然后再将其传回客户端(power bi)。

我面临的挑战是我无法获得驱动程序中预期 SQL_C_BIGINT 的格式。如果我进行简单转换,数据在客户端中显示不正确。

SQLRETURN SQLGetData(SQLHSTMT StatementHandle,
                             SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
                             SQLPOINTER TargetValue, SQLLEN BufferLength,
                             SQLLEN  *StrLen_or_Ind)
{
     //TargetType is SQL_C_BIGINT
     // Assuming that I have my data in p, how do I copy it to TargetValue so that it is read as SQL_C_BIGINT by the client???
}

SQL_C_BIGINT 基本上是一个 8 字节整数。我所要做的就是将值分配给 _int64 变量并将其传回。