Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры? / 6 сообщений из 6, страница 1 из 1
26.12.2005, 17:38
    #33458068
e.One
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
Пользуюсь MSSQL Sever i VC++!

Такой вопрос:

Можно ли с помощью одного _CommandPtr вызывать две разные хранимые процедуры с разным количеством параметров? Если да то как перейти от одной к другий без потери памяти?

Как полностью освободить память, которую занимает _CommandPtr вместе с параметрами и рекорсетом, которые возвращает?
...
Рейтинг: 0 / 0
26.12.2005, 17:57
    #33458117
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
Можно.
Очистить параметры.
Завернуть в {}
...
Рейтинг: 0 / 0
26.12.2005, 18:22
    #33458174
e.One
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
А как очистить параметры?

Я делаю:
while (pProcedure->Parameters->GetCount())
{
pProcedure->Parameters->Delete(0);
}

выскакивает с ошибкой:
Item cannot be found in the collection corre sponding to the requested name or ordinal.

немогу понять в чем причина?

помогите, пожайлуста!
...
Рейтинг: 0 / 0
26.12.2005, 18:50
    #33458225
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
e.OneА как очистить параметры?

Я делаю:
while (pProcedure->Parameters->GetCount())
{
pProcedure->Parameters->Delete(0);
}

выскакивает с ошибкой:
Item cannot be found in the collection corre sponding to the requested name or ordinal.

немогу понять в чем причина?

помогите, пожайлуста!

В волшебной буковке L

Код: plaintext
1.
2.
3.
pProcedure->Parameters->Delete(0L);
или
pProcedure->Parameters->Delete(long( 0 ));

Кстати, навскидку пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
int main(){
  _bstr_t ConnStr = "Provider=SQLOLEDB;       \
                     Data Source=(local);     \
                     Initial Catalog=pubs;    \
                     Integrated Security=SSPI";
  _ConnectionPtr conn;
  try {
    conn.CreateInstance(__uuidof(Connection));
    conn->CursorLocation = adUseServer;
    conn->IsolationLevel = adXactReadCommitted;
    conn->Attributes     =  0 ;
    conn->Open(ConnStr,"","",adConnectUnspecified);

    _CommandPtr cmd;
    cmd.CreateInstance(__uuidof(Command));
    cmd->ActiveConnection = conn;
    cmd->CommandType      = adCmdStoredProc;
    cmd->CommandText      = "reptq3";

    ParametersPtr pars = cmd->Parameters;
    pars->Append(cmd->CreateParameter("@ret",     adInteger, adParamReturnValue,  0 ,   0 ));
    pars->Append(cmd->CreateParameter("@lolimit", adDouble,  adParamInput,        0 ,   0 ));
    pars->Append(cmd->CreateParameter("@hilimit", adDouble,  adParamInput,        0 , 100 ));
    pars->Append(cmd->CreateParameter("@type",    adChar,    adParamInput,        1 , ""));

    _RecordsetPtr rs = cmd->Execute( 0 , 0 ,adOptionUnspecified);
    variant_t v,w;
    if(rs){while(true){while(!rs->adoEOF){
        v = rs->Fields->Item[0L]->Value; 
        w = rs->Fields->Item[0L]->Name; 
        MessageBoxW( 0 , bstr_t(v), bstr_t(w),  0 );
        rs->MoveNext();
      }if((rs = rs->NextRecordset( 0 ))== 0 )break;
    } }
    
    cmd->CommandText = "byroyalty";
    while( pars->Count >  0  )pars->Delete(0L);
    pars->Append(cmd->CreateParameter("@percentage", adInteger, adParamInput,  0 , 100 ));
    rs = cmd->Execute( 0 , 0 ,adOptionUnspecified);
    if(rs){while(true){while(!rs->adoEOF){
        v = rs->Fields->Item[0L]->Value; 
        w = rs->Fields->Item[0L]->Name; 
        MessageBoxW( 0 , bstr_t(v), bstr_t(w),  0 );
        rs->MoveNext();
      }if((rs = rs->NextRecordset( 0 ))== 0 )break;
    } }
. . .
...
Рейтинг: 0 / 0
26.12.2005, 19:34
    #33458291
e.One
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
Большое спасибо!
...
Рейтинг: 0 / 0
27.12.2005, 17:33
    #33460209
alex83_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
А можно хранимую процедуру в переменную запихнуть?
CString SQLProc="текст процедуры "
и потом вызвать её.

Мне просто так надо что-бы текст хранимки был в программе.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]