3

在我正在从事的项目中,我们有一个组件可以让我们与产品数据库进行交互。

它具有直接在数据库上运行查询的功能。

它使用下面的代码

IDispatch ThatComponent::ProcessQuery(BSTR query)
{

    pRecordset.CreateInstance(__uuidof(ADODB::Recordset));
    pRecordset->AddRef();

    pRecordset->Open(_bstr_t(QUERY), (IDispatch *)m_pConnection, ADODB::adOpenStatic, 
        ADODB::adLockOptimistic, ADODB::adCmdText);
    pRecordset->PutRefActiveConnection(NULL);

    return pRecordset;
}

现在,使用这个组件,我需要运行一个存储过程并检索它的返回值和一个输出参数。为此,我正在创建查询并将其传递给上面的 ProcessQuery() 函数。

“声明@RC int;声明@realrecordid int;执行@RC = IncrementRecordCount currentRecordId,@realrecordid 输出;选择@RC AS RC,@realrecordid AS ID;”

存储过程不返回任何记录集。

问题是,当记录集被返回时它是关闭的。而且我无法对其进行任何操作。

查看上面的查询,我想会有两个记录集。一个用于 exec 语句,一个用于 select 语句。

有没有办法可以从第一个关闭的记录集到第二个记录集?

在此先感谢,-尼尔

4

0 回答 0