powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как узнать сколько строк вернулось?
6 сообщений из 6, страница 1 из 1
Как узнать сколько строк вернулось?
    #33426021
Eugene7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу на ODBC(язык C++). Для возврата кол-ва колонок есть функция SQLNumResultCols(). Но какой функцией я могу узнать кол-во строк в возвращенном наборе записей?
Если нет такой функции, можно ли как то в "холостую" прогнать SQLFetch(), что-бы в цикле сосчитать кол-во строк, а потом снова с первой строки его прогнать, но уже возвращая значения в переменные?
...
Рейтинг: 0 / 0
Как узнать сколько строк вернулось?
    #33426038
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, нельзя.

Единственный способ узнать количество строк в резалт-сете не делая SQLFetch(), это включить на сервере (если сервер это вообще умеет) подсчет строк в резалт-сете и тогда SQLExecute() будет возвращать SQL_SUCCES_WITH_INFO и через SQLDiagRec() уже можно будет прочитать прогнозируемое количество строк.
Для ASA например, это можно сделать через SET OPTION ROW_COUNTS='On'; .
...
Рейтинг: 0 / 0
Как узнать сколько строк вернулось?
    #33426050
Eugene7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНет, нельзя.

Единственный способ узнать количество строк в резалт-сете не делая SQLFetch(), это включить на сервере (если сервер это вообще умеет) подсчет строк в резалт-сете и тогда SQLExecute() будет возвращать SQL_SUCCES_WITH_INFO и через SQLDiagRec() уже можно будет прочитать прогнозируемое количество строк.
Для ASA например, это можно сделать через SET OPTION ROW_COUNTS='On'; .

Тогда как прогнать SQLFetch() в "холостую"? Или просто прогнать дважды по одному и тому же резалт-сету?
...
Рейтинг: 0 / 0
Как узнать сколько строк вернулось?
    #33426104
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene7Тогда как прогнать SQLFetch() в "холостую"? Или просто прогнать дважды по одному и тому же резалт-сету?
Ну теоретически, можно сделать
Код: plaintext
1.
2.
3.
4.
5.
SQLFetchScroll(hStmt, SQL_FETCH_LAST,  0 );
SQLGetDescField(SQL_HANDLE_STMT, hStmt,  0 , SQL_DIAG_CURSOR_ROW_COUNT, ....
SQLFetchScroll(hStmt, SQL_FETCH_FIRST,  0 );
...
 SQLFetch();
Если открытый курсор позволяет бегать по нему, то это заработает.
...
Рейтинг: 0 / 0
Как узнать сколько строк вернулось?
    #33430568
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene7Пишу на ODBC(язык C++). Для возврата кол-ва колонок есть функция SQLNumResultCols(). Но какой функцией я могу узнать кол-во строк в возвращенном наборе записей? ....можно ли как то в "холостую" прогнать SQLFetch(), что-бы в цикле сосчитать кол-во строк, а потом снова с первой строки его прогнать, но уже возвращая значения в переменные?

1) Не знаю, что такое "писать на ODBC" но кол-во строк возвращает оператор count(xxxx) в стандартном SQL...
2) в "холостую прогнать" не получиться. Потому как на Вашу станцию будет перегон ВСЕХ данных которые Вы заказали. Решение наверное крутое, но для клиент-серверных решений очень дилетанское....

удачи Вам
(круглый)
ЗЫ
Рекомендую использовать стандарт SQL и не заморачиваться. Кстати, не плохо ответить на вопрос а нахрена Вам это нуна ? Единственная задача для которой енто было действительно встречалось - это чиссо показ пользователю в всплывающей подсказке (знаете, та что на скролл баре возникает, когда тащишь мышой)...всё остальное от лукавого, как правило...
...
Рейтинг: 0 / 0
Как узнать сколько строк вернулось?
    #33432213
Alex_VC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзай ADO (по крайней мере таких заморочек не будет)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как узнать сколько строк вернулось?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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