Hi Alex,
I try to extract some bits of code from a very big project. Let me know if this is enough.
SQL
Code: Select all
create or replace type obj_t as object
(
a_id number(18),
a_string varchar2(30)
);
create or replace type obj_array_t as varray(10) of obj_t;
create or replace type obj_complex_t as object
(
a_id number(18),
a_params obj_array_t
);
create table obj_complex_table of obj_complex_t;
--insert some data in obj_complex_table....
create table obj_complex_table2 of obj_complex_t;
In Rad Studio we try to copy the contents of obj_complex_table in obj_complex_table2...
Code: Select all
//QrySource is a TOraQuery "select * from obj_complex_table"
//QryTarget is a TOraQuery "select * from obj_complex_table2"
QrySource->Open();
QryTarget->Open();
TField* idfsource = QrySource->FieldByName(L"a_id");
TField* idftarget = QryTarget->FieldByName(L"a_id");
for(QrySource->First();!QrySource->Eof;QrySource->Next())
{
QryTarget->Append();
idftarget->Value = idfsource->Value;
TOraArray* arr_source = QrySource->GetArray(L"a_params");
TOraArray* arr_target = QryTarget->GetArray(L"a_params");
arr_target->Clear();
for (int i = 0; i < arr_source->Size; i++)
{
arr_target->InsertItem(i);
if (!arr_source->ItemIsNull[i])
{
arr_target->ItemAsObject[i] = arr_source->ItemAsObject[i];
}
}
QryTarget->Post();
}
We got an error as soon as the program starts copying a_params field. As I mentioned earlier, the following code resolves the problem.
Code: Select all
arr_target->ItemAsObject[i]->Assign(arr_source->ItemAsObject[i]);