Параметр AsArray для передачи в хранимую процедуру ODAC
От: Eugenie  
Дата: 05.08.04 07:20
Оценка:
Привет!

CBuilder5, ODAC5, Oracle 9.2.0.4
Есть ли у кого пример использования на С++ — как именно передать параметр как массив?

Спасибо!

05.08.04 22:10: Перенесено модератором из 'C/C++'. Андрей Тарасевич (30) в COM/DCOM/ActiveX Lorenzo_LAMAS (8) в COM/DCOM/ActiveX — Павел Кузнецов
Re: Параметр AsArray для передачи в хранимую процедуру ODAC
От: Stea1z Россия  
Дата: 05.08.04 08:03
Оценка: -1
Здравствуйте, Eugenie, Вы писали:

E>Привет!


E>CBuilder5, ODAC5, Oracle 9.2.0.4

E>Есть ли у кого пример использования на С++ — как именно передать параметр как массив?

E>Спасибо!


function(array[]); — это, если массив не многомерный.

Если массив многомерынй, то необходимо делать так:

function(array[][5][3]);

т.е. необходимо указывать все полследующие размерности, кроме первой.

если массив динамический, т.е., например определeн так:

int **array;

то просто передавай этот указатель:

function(array);

И вообще, попробуй почитать книжки по С...
Re[2]: Параметр AsArray для передачи в хранимую процедуру OD
От: ssm Россия  
Дата: 05.08.04 08:09
Оценка:
Здравствуйте, Stea1z, Вы писали:


S>И вообще, попробуй почитать книжки по С...


да ему в Oracle массив как параметр передать надо. книжки по С тут не помогут
Re[3]: Параметр AsArray для передачи в хранимую процедуру OD
От: Eugenie  
Дата: 05.08.04 08:51
Оценка:
S>>И вообще, попробуй почитать книжки по С...

ssm>да ему в Oracle массив как параметр передать надо. книжки по С тут не помогут


Тех книжек еще не написано (или уже да? плиз, ткните носом).
Конкретизирую вопрос.
Исходный код:


 1  DM1->SP_IN->StoredProcName="sACC.AdmClient";
 2  DM1->SP_IN->Prepare();
 3  DM1->SP_IN->ParamByName("PACTION")->AsString="I";
 4  DM1->SP_IN->ParamByName("pV")->AsArray->OCISvcCtx=DM1->Database1->OCISvcCtx;
 5  DM1->SP_IN->ParamByName("pV")->AsArray->AllocObject(DM1->Database1->OCISvcCtx,"CFBTYPE_CLAR");
 6  DM1->SP_IN->ParamByName("pV")->AsArray->ItemAsString[0] = lv->Strings[0];


валится на строке номер 5 в приведенном выше варианте с сообщением OCI function is not linked.

Если строку 5 переделать как

 5  DM1->SP_IN->ParamByName("pV")->AsArray->AllocObject(CFBTYPE_CLAR");


то вываливается access violation.

Кстати, если кто сможет объяснить, когда какую функцию надо вызывать, было бы хорошо!

Regards,
Eugenie
Re[4]: Параметр AsArray для передачи в хранимую процедуру OD
От: Stea1z Россия  
Дата: 05.08.04 11:04
Оценка:
Здравствуйте, Eugenie, Вы писали:

S>>>И вообще, попробуй почитать книжки по С...


ssm>>да ему в Oracle массив как параметр передать надо. книжки по С тут не помогут


E>Тех книжек еще не написано (или уже да? плиз, ткните носом).

E>Конкретизирую вопрос.
E>Исходный код:


E>
E> 1  DM1->SP_IN->StoredProcName="sACC.AdmClient";
E> 2  DM1->SP_IN->Prepare();
E> 3  DM1->SP_IN->ParamByName("PACTION")->AsString="I";
E> 4  DM1->SP_IN->ParamByName("pV")->AsArray->OCISvcCtx=DM1->Database1->OCISvcCtx;
E> 5  DM1->SP_IN->ParamByName("pV")->AsArray->AllocObject(DM1->Database1->OCISvcCtx,"CFBTYPE_CLAR");
E> 6  DM1->SP_IN->ParamByName("pV")->AsArray->ItemAsString[0] = lv->Strings[0];
E>


E>валится на строке номер 5 в приведенном выше варианте с сообщением OCI function is not linked.


E>Если строку 5 переделать как


E>
E> 5  DM1->SP_IN->ParamByName("pV")->AsArray->AllocObject(CFBTYPE_CLAR");
E>


E>то вываливается access violation.


E>Кстати, если кто сможет объяснить, когда какую функцию надо вызывать, было бы хорошо!


E>Regards,

E>Eugenie


да, действительно... я-то подумал, что проблема в другом. И к тому же я допустил ошибку — массивы в С передаются просто как указатель на 1-ый элемент. function(array);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.