私が取り組んでいるプロジェクトには、製品データベースとやり取りできるコンポーネントがあります。
データベースに直接クエリを実行する機能があります。
以下のコードを使用しています
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;
}
ここで、このコンポーネントを使用して、ストアド プロシージャを実行し、その戻り値と 1 つの出力パラメーターを取得する必要があります。そのために、このようにクエリを作成し、それを上記の ProcessQuery() 関数に渡します。
"DECLARE @RC int; declare @realrecordid int; exec @RC = IncrementRecordCount currentRecordId, @realrecordid OUTPUT; select @RC AS RC, @realrecordid AS ID;"
ストアド プロシージャはレコードセットを返しません。
問題は、レコードセットが返されると閉じられることです。そして、私はそれに対して操作を行うことはできません。
上記のクエリを見ると、2 つのレコードセットがあると思います。1 つは exec ステートメント用、もう 1 つは select ステートメント用です。
最初に閉じたレコードセットから 2 番目のレコードセットにアクセスする方法はありますか?
前もって感謝します、-ニール