我正在尝试从基于MFC的C ++程序在SQL Server上执行存储过程。存储过程确实正确执行,但在我的程序中抛出异常,CDBException带有“函数序列错误”消息。跟踪CRecordset :: Open的MFC源代码,从MoveNext抛出异常 - 这是有道理的,因为我的存储过程没有生成任何输出。
我有存储过程的输入和输出参数,所以我不能像这个问题中建议的那样使用CDatabase :: ExecuteSQL: With CDatabase, can I send SQL without using CRecordSet?
答案 0 :(得分:0)
我终于找到了解决问题的黑客,我等不及S.O.提供答案。我已经将问题追溯到CRecordSet :: MoveNext,它立即调用CRecordset :: Move。我没有立即意识到Move是虚拟的,所以可以用我自己的版本绕过它。
void CMyRecordset::Move(long nRows, WORD wFetchType)
{
(void) nRows;
(void) wFetchType;
m_bEOF = true;
}