代码之家  ›  专栏  ›  技术社区  ›  Mark Ransom

如何执行由crecordset::open引发的无异常存储过程?

  •  0
  • Mark Ransom  · 技术社区  · 15 年前

    我试图从基于MFC的C++程序在SQLServer上执行一个存储过程。存储过程确实得到了正确的执行,但是在我的程序中抛出了一个异常,一个带有“函数序列错误”消息的CDBException。通过crecordset::open的MFC源代码进行跟踪时,会从moveNext引发异常-这很有意义,因为我的存储过程没有生成任何输出。

    我对存储过程既有输入参数又有输出参数,因此我不能像这个问题中建议的那样使用cdatabase::executesql: With CDatabase, can I send SQL without using CRecordSet?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Mark Ransom    15 年前

    我终于想出了一个解决问题的方法,我等不及S.O.给出答案。我已经将问题跟踪到crecordset::movenext,它立即调用crecordset::move。我没有立即意识到,移动被声明为虚拟的,所以可以用我自己的版本绕过它。

    void CMyRecordset::Move(long nRows, WORD wFetchType)
    {
        (void) nRows;
        (void) wFetchType;
        m_bEOF = true;
    }