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

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


Если написать вместо @Quant какое либо число то всё пашет. Но это меня не устраивает.
Как я понимаю дело в то что SQL создаёт сначало макет процедуры. А сделать он этого не может так как неизвестно количество строк в запросе.
Помогите, кто чем может. Желательно на примере.
Зарание всем спасибо.
...
Рейтинг: 0 / 0
12.03.2002, 08:45
    #32024913
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите!!! SELECT TOP @quant * FROM Operators Оно не работает, а очень надо.
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
12.03.2002, 09:01
    #32024920
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите!!! SELECT TOP @quant * FROM Operators Оно не работает, а очень надо.
Выхода два.

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

Счастливо.

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


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