В настоящее время мне нужно запустить два запроса, чтобы получить как общее количество элементов в моем наборе результатов, так и в наборе результатов. Можно ли просто получить счетчик результатов, а также набор результатов за один проход к базе данных. Я пытаюсь оптимизировать свой код, поэтому мне не нужно делать 2 прохода в базу данных, так как эти отдельные команды выбора уже занимают минуты для запуска. Я ищу решение как в Oracle, так и в sqs sql, потому что я использую оба. Я также использую библиотеки доступа Microsoft Oracle для доступа к базе данных Oracle, а не к библиотекам доступа Oracle.Возможно ли получить результат с номером строки с результатами запроса?
ответ
Не существует свойства OracleCommand или oracleDataReader, который показывает извлеченные строки. Количество строк известно после fetchin всех строк.
Но Если вы выберете все данные в набор результатов, то у вас есть количество строк в resultset.Tables[0].Rows.Count
, как указано выше. Это не требует дополнительных затрат на базу данных, поскольку граф является собственностью коллекции строк. Номер индекса зависит от количества таблиц в вашем наборе результатов.
Если вы выполняете итерацию через результирующий набор, не будет ли возможно увеличивать счетчик на каждой итерации?
Возможно, вам нужна тактика, например, добавить столбец count(*) as RESULTSET_SIZE
?
Это было единственное решение, о котором я мог думать, но мне было интересно, есть ли метод, который я мог бы использовать, или какую-то другую стратегию. Я буду отмечать это как решение, если нет альтернативного решения, которое лучше. – EverTheLearner
В зависимости от вашей версии Oracle вы можете использовать аналитическую функцию count() для возврата столбца, содержащего количество полных строк.
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions032.htm#i82697
select a.*,
count(*) over() totalRows
from table1 a;
Хорошее предложение. Но как бы вы могли прочитать столбец с помощью OracleDataReader? Использование метода GetInt32 фактически вызывает InvalidCastException. – rmoestl
Это просто дополнительный столбец для запроса (похожий только на count (*)), поэтому вы можете выводить его точно так же, как и любой другой псевдонимов. –
На самом деле я понял, что он работает при использовании 'Convert.ToInt32 (reader.GetDecimal (index))' – rmoestl
ОК это может быть то, что вы после: @@ROWCOUNT
возвращает количество строк, затронутых пользователей последней операции базы данных. Так что вам не нужно, чтобы добавить столбец или сделать еще один проход, просто запрос затем попросить @@ ROWCOUNT:
SELECT @@ ROWCOUNT как «Rows_Returned»
EDIT:
Это работает только для SQL-сервер. Для Oracle используется SQL% Rowcount
Надеюсь, что это поможет
Это справедливо для SQL Server; вопрос помечен для Oracle. Вы бы использовали SQL% ROWCOUNT для Oracle ... –
Фактически OP после решения SQL Server и Oracle, –
- 1. Возможно ли работать с результатами запроса HTTParty как объекта
- 2. Подсчитать запрос с результатами запроса
- 3. Как получить страницу google с результатами запроса?
- 4. результат запроса с несколькими результатами с помощью инструкции if else
- 5. Регистрация запроса с концевыми результатами
- 6. MySQL: Получить упорядоченные записи с номером строки
- 7. Номер строки с номером строки
- 8. Возможно ли заменить результат запроса SQL Select?
- 9. Возможно ли сделать результат запроса при запуске другого запроса?
- 10. Обновить таблицу с результатами запроса
- 11. как связать с результатами запроса в WPF
- 12. Получить строки с первым номером телефона
- 13. Как сравнить строку с результатами запроса?
- 14. Почему подсветка не работает с результатами запроса?
- 15. Получить строку с максимальным номером
- 16. Итерационные строки с неправильными результатами
- 17. Проблема с результатами запроса SELECT с MySQLI
- 18. sql запрос, чтобы получить группу с номером
- 19. Gettext из строки с номером
- 20. Формула конкатенации с номером строки
- 21. Возможно получить результат процесса
- 22. Gremlin: Результат результата результата вместе с результатами
- 23. Результат Ajax кажется связанным с предыдущими результатами
- 24. Возможно ли переменная получить результат возврата?
- 25. Заполнить ComboBox с результатами запроса LINQ, напрямую
- 26. Таблица обновлений с номером строки
- 27. SQL: Как получить отличное значение в сочетании с результатами строки
- 28. mysql swap элементы с номером строки
- 29. Заполнять Литеральные элементы с результатами запроса SqlDataSource
- 30. Странный результат умножения переменной uint16_t с номером
Какой язык вы используете? –
C# в среде ASP.net. – EverTheLearner