在我工作的项目中,我们有一个组件,可以让我们与产品数据库进行交互。
它具有将查询直接运行到数据库上的功能。
使用以下代码
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()函数。
“DECLARE @RC int;声明@realrecordid int; exec @RC = IncrementRecordCount currentRecordId,@ realrecordid OUTPUT;选择@RC AS RC,@ realrecordid AS ID;”
存储过程不会返回任何记录集。
问题是,当记录集返回时,它将被关闭。我无法对其进行任何操作。
看看上面的查询,我想会有两个记录集。一个用于exec语句,一个用于select语句。
有没有办法从第一个关闭的记录集中获得第二个记录集?
提前致谢, -Neel