ADO
От: dilsh  
Дата: 22.08.05 10:32
Оценка:
Пытаюсь выполнить хранимую процедуру 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++' — Павел Кузнецов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.