CodePudding user response:
Write the demo code is as follows:# include & lt; Windows. H>
# include & lt; Sqltypes. H>
# include & lt; SQL. H>
# include & lt; Sqlext. H>
Int main ()
{
SQLHENV henv;
SQLHDBC HDBC;
SQLHSTMT HSTMT;
SQLHDESC hAPDdesc;
SQLHDESC hARDdesc;
SQLRETURN retcode;
SQLCHAR OutConnStr [1024].
SQLSMALLINT OutConnStrLen;
Retcode=SQLAllocHandle (SQL_HANDLE_ENV SQL_NULL_HANDLE, & amp; Henv);
If (retcode==SQL_SUCCESS | | retcode==SQL_SUCCESS_WITH_INFO) {
Retcode=SQLSetEnvAttr (henv SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3 SQLPOINTER *, 0).
If (retcode==SQL_SUCCESS | | retcode==SQL_SUCCESS_WITH_INFO) {
Retcode=SQLAllocHandle (SQL_HANDLE_DBC henv, & amp; HDBC);
If (retcode==SQL_SUCCESS | | retcode==SQL_SUCCESS_WITH_INFO) {
Retcode=SQLDriverConnect (
HDBC,
NULL,
(SQLCHAR *) "DRIVER={Oracle in OraClient11g_home1_32bit}; SERVER=testoracle; UID=testoracle; The PWD=123; DBQ=testoracle;" ,
SQL_NTS,
OutConnStr,
1024,
& OutConnStrLen,
SQL_DRIVER_NOPROMPT);
If (retcode==SQL_SUCCESS | | retcode==SQL_SUCCESS_WITH_INFO) {
Retcode=SQLAllocHandle (HDBC SQL_HANDLE_STMT, & amp; HSTMT);
Retcode=SQLPrepare (HSTMT, (SQLCHAR *) "select interval_column from TESTORACLE. DATATYPE_INTERVAL;" , SQL_NTS);
Retcode=SQLExecute (HSTMT);
SQLINTEGER desclen;
Retcode=SQLGetStmtAttr (HSTMT, SQL_ATTR_APP_ROW_DESC, & amp; HARDdesc SQL_IS_POINTER, & amp; Desclen);
Retcode=SQLSetDescField (hARDdesc, 1, SQL_DESC_TYPE, SQLPOINTER SQL_INTERVAL, 0).
Retcode=SQLSetDescField (hARDdesc, 1, SQL_DESC_CONCISE_TYPE, SQLPOINTER SQL_C_INTERVAL_DAY_TO_SECOND, SQL_IS_INTEGER);//return 1
Retcode=SQLSetDescField (hARDdesc, 1, SQL_DESC_DATETIME_INTERVAL_CODE, SQLPOINTER SQL_CODE_DAY_TO_SECOND, SQL_IS_INTEGER);//return 1
//Bind
SQL_INTERVAL_STRUCT is;
SQLLEN cbValue;
Retcode=SQLBindCol (HSTMT, 1, SQL_C_INTERVAL_DAY_TO_SECOND, & amp; Is, sizeof (SQL_INTERVAL_STRUCT), & amp; CbValue);//return 1, error message: do not support this type
//the Fetch
Retcode=SQLFetch (HSTMT);
If (retcode==SQL_SUCCESS | | retcode==SQL_SUCCESS_WITH_INFO)
{
}
SQLCancel (HSTMT);
If (retcode==SQL_SUCCESS | | retcode==SQL_SUCCESS_WITH_INFO) {
SQLFreeHandle (SQL_HANDLE_STMT HSTMT);
}
SQLDisconnect (HDBC);
}
SQLFreeHandle (SQL_HANDLE_DBC HDBC);
}
}
SQLFreeHandle (SQL_HANDLE_ENV henv);
}
system("pause");
return 0;
}