Можете ли вы передать число TOP в качестве параметра хранимой процедуре? [дубликат]

Возможный дубликат:
SQL Server - используйте параметр, чтобы выбрать верхний X результирующего набора

Мой запрос в моей хранимой процедуре выглядит примерно так:

select top 9 from my_table;

Я хотел бы отредактировать хранимую процедуру, чтобы динамически определять ограничение на основе параметра, однако это не работает:

ALTER PROCEDURE [dbo].[my_stored_procedure]
   @n INT(2)
AS
BEGIN

SELECT TOP @n from my_table;

Это выполнимо? Или мне нужно сделать что-то вроде:

@n int(2),
@sql varchar(30)

@sql = 'select top ' + @n '* from my table';
exec(@sql);

Спасибо.

23
задан Community 23 May 2017 в 12:17
поделиться