Как выбрать всю таблицу с помощью OTL и сохранить ее в файл? - PullRequest
3 голосов
/ 27 сентября 2010

Вот проблема, я не знаю, сколько атрибутов или какого типа они являются атрибутами в таблице, и мне нужно просто выбрать статистику, например: SELECT * FROM TABLE1; записать в файл.

И это нужно сделать с помощью оболочки otlv4.

Пожалуйста, помогите.

otl_stream i(50, // buffer size             
     "select * from test_tab where f1>=:f<int> and f1<=:f*2",                 // SELECT statement           
     db // connect object      
     );     
int ac=0;
     char bc[64];
     memset(bc, 0, 64);

     while(!i.eof())
     {

        i >> ac >> bc;
        cout << "Boooo " << ac << "  " << bc << endl;
     }

Это пример, где я знаю, сколько там атрибутов и какого типа. Но что, если я этого не знаю ??

1 Ответ

0 голосов
/ 29 сентября 2010

Поток файлов вместе с функциями check_end_of_row () и set_all_column_types () OTL должен выполнять то, что вы просите.Зацикливаясь на проверке eof потока OTL, для каждой строки вы можете зацикливаться на проверке конца строки и отправлять значение каждого атрибута из потока OTL в поток файлов.После каждой проверки конца строки отправляйте свой код (ы) разрыва строки в поток файлов.Установка всех типов столбцов в str должна позволить вам использовать только одну переменную для обработки всех значений атрибутов в строке.

Этот пример из документов OTL демонстрирует, как использовать функцию set_all_column_types.Сначала вы должны создать поток, установить опцию, а затем открыть поток.Если вы создадите и откроете поток одновременно, он не будет работать.

...