powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Универсальный селект для ODBC
9 сообщений из 9, страница 1 из 1
Универсальный селект для ODBC
    #33638015
m43
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста, можно ли написать селект на выборку первых N записей из таблицы, который бы правильно работал на большинстве баз?
Заранее спасибо!
...
Рейтинг: 0 / 0
Универсальный селект для ODBC
    #33638518
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
SQLExecDirect(hStmt, "SELECT * FROM MyTable ORDER BY 1, 2, 3", SQL_NTS);
for(i= 0 ; i<N; i++) {
    SQLFetch(hStmt);
    /// SQLGetData() или еще что-нибудь
}
SQLCancel(hStmt);
Абсолютная универсальность :)
...
Рейтинг: 0 / 0
Универсальный селект для ODBC
    #33638544
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl wrote:
> SQLExecDirect(hStmt, "SELECT * FROM MyTable ORDER BY 1, 2, 3", SQL_NTS);
> for(i=*0*; i<N; i++) {
> SQLFetch(hStmt);
> /// SQLGetData() или еще что-нибудь
> }
> SQLCancel(hStmt);
>
> Абсолютная универсальность :)
и как минимум 2 ошибки, ага? :-)

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Универсальный селект для ODBC
    #33638728
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyи как минимум 2 ошибки, ага? :-)
Где?
...
Рейтинг: 0 / 0
Универсальный селект для ODBC
    #33638751
madgol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Код: plaintext
1.
2.
3.
4.
5.
SQLExecDirect(hStmt, "SELECT * FROM MyTable ORDER BY 1, 2, 3", SQL_NTS);
for(i= 0 ; i<N; i++) {
    SQLFetch(hStmt);
    /// SQLGetData() или еще что-нибудь
}
SQLCancel(hStmt);
Абсолютная универсальность :)
А если N - сотни тысяч?
Лучше написать класс с потомками для каждого диалекта
...
Рейтинг: 0 / 0
Универсальный селект для ODBC
    #33639776
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl wrote:
>Где?
> SQLExecDirect(hStmt, "SELECT * FROM MyTable ORDER BY 1, 2, 3", SQL_NTS);
не все сервера поддерживают ORDER BY 1,2,3

> for(i=*0*; i<N; i++) {
> SQLFetch(hStmt);
а если число строк в выборке меньше N?

> /// SQLGetData() или еще что-нибудь
> }
> SQLCancel(hStmt);
>
> Абсолютная универсальность :)
а-ха!

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Универсальный селект для ODBC
    #33640447
m43
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Код: plaintext
1.
2.
3.
4.
5.
SQLExecDirect(hStmt, "SELECT * FROM MyTable ORDER BY 1, 2, 3", SQL_NTS);
for(i= 0 ; i<N; i++) {
    SQLFetch(hStmt);
    /// SQLGetData() или еще что-нибудь
}
SQLCancel(hStmt);
Абсолютная универсальность :)
неа, так не пойдет, слишком долго работает, если много записей и задана сортировка по какой-либо колонке.
...
Рейтинг: 0 / 0
Универсальный селект для ODBC
    #33642014
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyне все сервера поддерживают ORDER BY 1,2,3
А зачем использовать такой кривой сервер? Кстати, напомни, какой именно сервер не умеет сортировать по номерам колонок в резалтсете?

locky> for(i=*0*; i<N; i++) {
> SQLFetch(hStmt);
а если число строк в выборке меньше N?
Тогда SQLFetch() вернет SQL_NO_DATA и ты сделаешь break циклу.
А почему ты не прицепился к отсутствию проверки на ошибки?


m43неа, так не пойдет, слишком долго работает, если много записей и задана сортировка по какой-либо колонке.? О чем ты говоришь? Кто и где долго работает? Твой сервер долго делает сортировку по order by? Или твой драйвер ODBC не умеет сбрасывать остатки резалтсета пока он весь не выкачан?
...
Рейтинг: 0 / 0
Универсальный селект для ODBC
    #33642068
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl wrote:
> locky
> не все сервера поддерживают ORDER BY 1,2,3
>
>
> А зачем использовать такой кривой сервер? Кстати, напомни, какой именно
> сервер не умеет сортировать по номерам колонок в резалтсете?
Ну, зачем такой кривой - фиг его знает, но хотять то универсально. А
какой не поддерживает - ну... есть наверное, такие.
>

> locky
> > for(i=*0*; i<N; i++) {
> > SQLFetch(hStmt);
> а если число строк в выборке меньше N?
>
>
> Тогда SQLFetch() вернет SQL_NO_DATA и ты сделаешь break циклу.
> А почему ты не прицепился к отсутствию проверки на ошибки?
К этому и прицепился, собственно.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Универсальный селект для ODBC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]