Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/32: Рейтинг темы: голосов - 32, средняя оценка - 4.91
Maksim

Подскажите, как сделать хранимую процедуру в MS SQL для постраничного вывода?

13.08.2007, 14:37. Показов 6290. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть следующие мысли:
Если можно сделать запрос, который добавит еще одно поле, проиндексированное от 0 до количества записей, я смогу решить задачу...
Возможно ли сделать такой запрос?
А может есть другие способы решения?
В Oracle вроде можно получить номер строки в запросе... А в MS SQL?
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.08.2007, 14:37
Ответы с готовыми решениями:

Передача данных из клиента VB 6.0 в хранимую процедуру MS SQL Server 7.0 (+++)
В проге VB есть переменная Price as Currency Надо в хронимую процедуру на MS SQL Server 7.0 передать ее в переменную @Price money Когда...

Переделать хранимую процедуру с MS SQL на oracle
Добрый вечер! возникла проблема, у меня есть хранимая процедура работающая в MS SQL Managment Studio, и теперь нужно ее немного...

Перевод параметров из VB в хранимую процедуру MS SQL Server2000
Помогите новичку! Как без особых наворотов передать в хранимую процедуру на сервере параметры из поля на форме Форма1 *.adp? На основе SP...

30
Maksim
16.08.2007, 14:09
Студворк — интернет-сервис помощи студентам
Nu ravenstvo obespechit' netrudno...
Po povodu vtorogo...
Kak tak, vernetsya pervym?
Ya formiruyu stroku zaprosa set exec @sqlstring= 'SELECT.... UNION... WHERE...', potom vyzyvayu

exec sp_executesql @sqlstring
GO

Kak opredelyaetsya poryadok vyvoda v dannom sluchae?
0 / 0 / 1
Регистрация: 22.07.2007
Сообщений: 260
16.08.2007, 14:42
Можешь попробовать экспериментально. Но порядок не регламентирован. У меня второй SELECT появляется первым в VB
0
AiK
16.08.2007, 16:32
Немного уточнений:
порядок выдачи любого не упорядоченного селекта - произволен.
Другое дело, если в таблице есть CLUSTERED индекс, то резултаты выборки будут упорядочены по этому индексу.

Как известно, любой UNION заствляет сервер создавать рабочую таблицу, в таблице никаких clustered индексов не строится, поэтому порядок выдачи результатов может быть абсолютно не предсказуем.

Поэтому в UNION _обычно_ юзают order by.
Если резалтсеты нужно получить в определённом порядке, то иногда добавляют колонку с номером резалтсета и сначала сортируют по этой колонке, а потом по всем остальным.
Astor
16.08.2007, 17:32
Я использую Stored Procedure, которая все выбранные записи (сложный Select из множества таблиц со многими Join) помещает во временную таблицу, у которой есть поле int identity.

А потом из этой таблицы делаю Select где задаю диапазон значений из поля identity.

Я не могу сказать что это красивое и быстрое решение, но оно работает и во всяком случае не гоняет лишние данные между SQL сервером и IIS, который все это визуализирует.
Maksim
16.08.2007, 19:39
UNION и правда, никак не сортируется... Накакой закономерности не обнаружил...
У меня он по счастливой случайности попадал в начало...
Moжет делать
SELECT *, O AS pppppp FROM....
UNION
SELECT *, 1 AS pppppp FROM...
А потом сортировать по этому столбцу...
Опять временные таблицы... Дурдом....
Maksim
16.08.2007, 19:47
Короче, вот что родилось:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DECLARE @temp_table TABLE (name VARCHAR(50), pageN INT, pageSize INT, id_num INT IDENTITY(0,1))
-------------------------------------------
DECLARE @page_size INT
DECLARE @page_number INT
SET @page_size = 10
SET @page_number = 67
------------------------------------------- 
DECLARE @rowmin INT 
DECLARE @rowmax INT 
DECLARE @counter INT
SET @rowmax = @page_number*@page_size
SET @rowmin = (@page_number-1)*@page_size
INSERT INTO @temp_table SELECT COUNT(*), @page_number, @page_size FROM utilizadores 
INSERT INTO @temp_table SELECT nome, NULL, NULL FROM utilizadores
-- Страница --
SELECT * FROM @temp_table WHERE id_num = 0 OR (id_num > @rowmin AND id_num < = @rowmax)
В первой строке приходят данные о общем числе записей, номер страницы, размер её...
Затем наша страница...

Осталось то, о чем я говорил, ловить изменения базы во время пролистывания...
Существуют ли какие-то 'timestamps' для таблиц? Как это выловить? Для записей нашел в Books Onlain, а для таблиц целиком?

А может есть возможность хранить мою временную таблицу в течении всего сеанса пролистывания? Наверное нельзя...

Идей много, но получается очень все грубо и увесисто...
0 / 0 / 1
Регистрация: 22.07.2007
Сообщений: 260
17.08.2007, 11:24
Стандартных способов для этого я не знаю. Единственное, что приходит в голову это отлавливать изменения в тригере на задействованные таблицы и инициализировать некую запись в специальной таблице. При выводе пользователю данных проверять необходимость перезапроса на основании этой записи.
0
vintik
17.08.2007, 18:19
Бродил я как то по www.activeserverpages.ru
и там в форуме нашёл такоё

http://www.activeserverpages.r... owsub=7300
--------------
Выводит записи с m по n. Придумано не мной, читай
SQL Magazine www.sqlmag.com

SQL
1
2
3
4
5
SELECT * FROM
(SELECT top m * FROM
(SELECT top n * FROM my_table ORDER BY column_name) AS t1
ORDER BY column_name DESC) AS t2
ORDER BY column_name
Вроде это то что тебе надо,
без всяких времменных таблиц
и данные всегда 'свежие'
sa
19.08.2007, 01:21
Капиталисты тоже на эту тему думают:
http://www.15seconds.com/issue/010607.htm
Maksim
19.08.2007, 11:26
Ya toje u kapitalistov rabotayu....
Maksim
19.08.2007, 16:07
По поводу
SQL
1
2
3
4
5
SELECT * FROM
(SELECT top m * FROM
(SELECT top n * FROM my_table ORDER BY column_name) AS t1
ORDER BY column_name DESC) AS t2
ORDER BY column_name
Все хорошо, но надо иметь уверенность, что COLLUMN_NAME заполнен уникальными значениями...
У меня таких столбцов не было...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.08.2007, 16:07

Как сделать хранимую процедуру?
Составить хранимую процедуру для реализации факта аренды яхты и отображения контракта в виде таблицы. При этом стоимость контракта...

Нужен пример на JS для постраничного вывода запросов из БД Microsoft SQL Server 2000.
Люди, помогиет мне. Я уже просто устал. Нужен пример на JS для постраничного вывода запросов из БД Microsoft SQL Server 2000. Буду...

PHP + MS SQL. Как передать параметры в хранимую процедуру?
Как передать из PHP значения параметров для хранимой процедуры в MS SQL Server перед ее выполнением?

Код для постраничного вывода результатов поиска как у поисковиков. Что не так?
Есть код, который выбирает из базы значения в соответствии с запросом и выводит их пользователю постранично (по 60 результатов на страницу)...

Вызвать хранимую процедуру из MS SQL Server с параметром
Подскажите пожалуйста, что делать если выдает ошибку в Delhi А код вот такой: procedure TFPrimZakaza.BitBtn1Click(Sender:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru