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

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

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

Как полностью освободить память, которую занимает _CommandPtr вместе с параметрами и рекорсетом, которые возвращает?
...
Рейтинг: 0 / 0
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
    #33458117
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно.
Очистить параметры.
Завернуть в {}
...
Рейтинг: 0 / 0
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
    #33458174
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.

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

помогите, пожайлуста!
...
Рейтинг: 0 / 0
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
    #33458225
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
    #33458291
e.One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!
...
Рейтинг: 0 / 0
ADO: можно ли одним _CommandPtr вызвать 2 разные процедуры?
    #33460209
alex83_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно хранимую процедуру в переменную запихнуть?
CString SQLProc="текст процедуры "
и потом вызвать её.

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


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