Я имею следующую хранимую процедуру внутри стороннего приложения внутри SQL Server 2008 R2: -Почему эта хранимая процедура использует ТОП 100 ПРОЦЕНТ?
ALTER PROCEDURE [dbo].[GetContacts]
AS
BEGIN
---------
SELECT TOP (100) PERCENT .....
INTO [#temp200]
FROM dbo.Contact
ORDER BY dbo.Contact.Name
--SELECT * from #temp200
SELECT top 38 *
FROM #temp200
ORDER BY Fullname
delete top (38) FROM #temp200
SELECT top 38 *
FROM #temp200
ORDER BY Fullname
delete top (38) FROM #temp200
SELECT top 38 *
FROM #temp200
ORDER BY Fullname
delete top (38) FROM #temp200
SELECT *
FROM #temp200
ORDER BY Fullname
Теперь я бегу это внутри студии управления SQL, где я получил следующие результаты вкладки: -
первый содержит 38 записей.
второй 38 записей.
третья содержит 38 записей.
четвертый содержит 30 записей.
, где в данном случае я получил 144 записей ,, так что не уверен, что цель (SELECT TOP (100))
, как я буду получать 144 записей. теперь в качестве теста я изменил Select TOP(100)
на Select TOP(35)
, где в этом случае я получил 2 результата; первый из которых содержит 38 записей, а второй - 17 записей и ... так может ли кто-нибудь посоветовать, как работает мой выше SP?
Уверены, что у вас нет 'SELECT TOP (100) PERCENT ..... INTO [# temp200] FROM ...'? Если да, вы создаете таблицу '# temp200' со всеми записями из' contact' (144?) – lad2025
В любом случае подготовьте http://sqlfiddle.com, чтобы воссоздать ваш случай – lad2025
Я никогда не видел ничего подобного. Это плохая попытка пейджинга 38 записей на страницу с лимитом в 4 страницы? Я также не понимаю, почему есть вершина (100), если она будет на 100% выше. Как возможно, вы получите больше записей, чем то, что вы вставили в таблицу. Я подозреваю, что нам не хватает частей этого запроса. – ewahner