Пытаюсь выполнить хранимую процедуру MSSQL и прочитать возвращаемые ею значения.
_bstr_t strCnn("Provider=sqloledb;Data Source=MSSqL; Initial Catalog=db1;User Id=user;Password=pwd;");
_ConnectionPtr pConnection = NULL;
_CommandPtr pCmdChange = NULL;
_RecordsetPtr pRs = NULL;
_ParameterPtr pprmCmdChange ;
TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
pConnection->Open (strCnn, "", "", adConnectUnspecified);
TESTHR(pCmdChange.CreateInstance(__uuidof(Command)));
pCmdChange->ActiveConnection = pConnection;
pCmdChange->CommandText = "sp";
pCmdChange->CommandType=adCmdStoredProc;
TESTHR(pRs.CreateInstance(__uuidof(Recordset)));
vtCriteria.vt = VT_I2;
vtCriteria.iVal =2;
pprmCmdChange = pCmdChange->CreateParameter("brand", adInteger,adParamInput, sizeof(int), vtCriteria);
pprmCmdChange->Value = vtCriteria;
pCmdChange->Parameters->Append(pprmCmdChange);
pRs=pCmdChange->Execute(NULL, NULL, adCmdStoredProc);
А что дальше? Попытка выполнить, к примеру, pRs->MoveNext() вызывает ругань, мол, невозможно выполнить операцию на закрытом рекордсете.
В MSDN про метод Execute объекта AdoCommand пишут "Execute returns a closed Recordset." Ну никак не могу врубиться как же его открыть?!
22.08.05 17:34: Перенесено модератором из 'C/C++' — Павел Кузнецов