Попытка минимизировать количество строк для выборки массива OCCI путем сохранения структуры, содержащей буфер символов, в вектор, код ниже:
struct Columns { char buffer[1000][300]; };
int i = 1;
Columns col;
ub4* ub = NULL;
results->setDataBuffer( i++, col.buffer, OCCI_SQLT_STR, sizeof( col.buffer[ 0 ] ), ub );
vec.push_back( col );
cout << "Before, vec size: " << vec.size( ) << "\n"; // prints 1, as expected
while ( results->next( 1000 ) ) {
for ( size_t j = 0; j < results->getNumArrayRows( ); ++j ) {
cout << vec[ 0 ].buffer[ j ] << endl;
}
Теперь почему-то это не работает. Однако, если вместо использования col.buffer я создаю буфер символов [1000] [300] и помещаю его в setDataBuffer, тогда в части cout выполните: cout ‹* buffer [j] ‹< endl;
это прекрасно работает. Так что я не совсем уверен, где я облажался?
буфер символов - это то же самое, что и col.buffer, не так ли?
Я не думаю, что это имеет значение, но структура столбцов определена в файле заголовка.