powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите!!! SELECT TOP @quant * FROM Operators Оно не работает, а очень надо.
4 сообщений из 4, страница 1 из 1
Помогите!!! SELECT TOP @quant * FROM Operators Оно не работает, а очень надо.
    #32024910
sio_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди знающие помогите пожалуйста. Ситуёвина следующаая, мне нужно чтобы хранимая процедура далала выборку из таблицы нескольких первых записей. Причём количество этих щаписей является переменной величиной и зхадаваемой из вне.
В упрощённом виде код вот такой:

CREATE PROCEDURE dbo.sp_BillHeader (@Inf int)AS
SELECT TOP @Quant * FROM BillHeader
GO


Если написать вместо @Quant какое либо число то всё пашет. Но это меня не устраивает.
Как я понимаю дело в то что SQL создаёт сначало макет процедуры. А сделать он этого не может так как неизвестно количество строк в запросе.
Помогите, кто чем может. Желательно на примере.
Зарание всем спасибо.
...
Рейтинг: 0 / 0
Помогите!!! SELECT TOP @quant * FROM Operators Оно не работает, а очень надо.
    #32024913
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE PROCEDURE dbo.sp_BillHeader (@Inf int, @Quant int=0)AS

SET ROWCOUNT @Quant
SELECT * FROM BillHeader
SET ROWCOUNT 0


IF @Quant > 0 exec('SELECT TOP '+CAST(@Quant AS varchar)+ ' * FROM BillHeader')
GO
...
Рейтинг: 0 / 0
Помогите!!! SELECT TOP @quant * FROM Operators Оно не работает, а очень надо.
    #32024920
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выхода два.

1. Dynamic SQL. Создать SQL запрос "налету". Далее исполнить через sp_executesql
2. Использовать set rowcount @n. Но тут есть нюансы со сложными запросами.

Счастливо.

P.S. Классическая задача для web: вернуть столько записей, сколько клиент реально
может просмотреть из общего, как правило, большого числа.
...
Рейтинг: 0 / 0
Помогите!!! SELECT TOP @quant * FROM Operators Оно не работает, а очень надо.
    #32024938
sio_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем огромное.
с вариантом
SET ROWCOUNT @Quant
SELECT * FROM BillHeader
SET ROWCOUNT 0
всё заработало. Следующий способ не помог, так как у меня на самом деле достаточно сложный запрос и там возникают разные глюки.
Ещё раз огромное всем спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите!!! SELECT TOP @quant * FROM Operators Оно не работает, а очень надо.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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