AFX_ODBC_CALL

AFX_ODBC_CALL( SQLFunc )

参数:
SQLFunc一个ODBC API 函数。有关ODBC API函数的更多信息请参见《ODBCSDK 程序员参考》。

说明:
使用这个宏来调用那些返回SQL_STILL_EXECUTING 的ODBC API 函数。
AFX_ODBC_CALL会重复调用这个函数,直到它们不再返回SQL_STILL_EXECUTING。
在使用AFX_ODBC_CALL之前,你必须声明一个RETCODE类型的变量nRetCode。你可以在调用了这个宏后使用CRecordset::Check函数来检查nRetCode的值。
注意现在MFC的ODBC类仅使用同步处理。如果要实现异步操作,你必须调用ODBC的API函数SQLSetConnectOption。有关的更多信息请参见《ODBC SDK程序员参考》中的“异步执行函数”主题。

示例:
这个例子使用AFX_ODBC_CALL来调用ODBC 的API函数SQLColumns,它返回由strTableName列名的表中的数据列的列表。注意,声明了nRetCode,并且将记录集数据成员作为参数传递给该函数。这个例子同时还演示了如何用CRecordset类的成员函数Check来检查结果。变量prs是指向CRecordset对象的指针,可以在别处声明。
// AFX_ODBC_CALL的例子
RETCODE nRetCode;
AFX_ODBC_CALL( ::SQLColumns( prs->m_hstmt,
               (UCHAR *)NULL, SQL_NTS, (UCHAR *)NULL,
               SQL_NTS, (UCHAR *)(constchar*)strTableName,
               SQL_NTS, (UCHAR *)NULL, SQL_NTS )
             );

if( !prs->Check( nRetCode ) )
{
  AfxThrowDBException( nRetCode, prs->m_pdb, prs->m_hstmt );
  TRACE( "SQLColumns failed\n" );
}

请参阅:AFX_SQL_ASYNC, AFX_SQL_SYNC