как использовать setDataBuffer из OCCI для выборки массива - PullRequest
2 голосов
/ 06 апреля 2011

У меня есть запрос, который я выполняю в базе данных, которая возвращает массив записей, я прочитал в документации Oracle OCCI, вы должны использовать функцию ResultSet :: setDataBuffer () для извлечения массиваданных из базы данных.

Я просто не понимаю, что я должен дать в качестве первых двух аргументов, когда строка базы данных содержит несколько столбцов с различными данными?Какой тип я должен дать в качестве моего типа буфера?

//example, does not contain all parts, just enough to demonstrate my point
    SELECT AGE, BIRTHDATE, NAME FROM PEOPLE;
    int i[10];  // Type of buffer??? Age is int, but name is a string?
    ResultSet* res;
    res->setDataBuffer(1 /*col index of first col in select statement*/, &i[0], OCCIINT, 10 * sizeof(int));

while(res->next()) { //Fetch data...}

Я безуспешно искал в Google примеры.Я надеюсь, что кто-то здесь может помочь?

1 Ответ

2 голосов
/ 06 апреля 2011

Согласно нашим комментариям, я приведу простой пример, используя функции getString (), ...:

// Statement -> stmt
// ResultSet -> res
// Connection -> con

// pseudo code ahead !

stmt = con->createStatement(MY_SELECT, MY_TAG);
stmt->setPrefetchRowCount(NUMBER_OF_PREFETCHES); // enable bulk collect
res = stmt->executeQuery();

while(res->next())
{
    date = res->getDate(INDEX_OF_DATE);
    age = res->getInt(INDEX_OF_AGE);
    name = res->getString(INDEX_OF_NAME);

    // do something with date, age, name...
}

stmt->closeResultSet(res);
con->terminateStatement(stmt);

Но я думаю, это именно то, что вы изначально делали?

...