Почему следующее не работает?
CREATE FUNCTION Test (@top integer) RETURNS TABLE AS RETURN SELECT TOP @top * FROM SomeTable GO
Я просто хочу иметь возможность указать количество возвращаемых результатов. [SQL Server 2000.]
Спасибо!
Для MS SQL 2000 вы можете использовать:
CREATE FUNCTION Test (@top integer) RETURNS TABLE AS SET ROWCOUNT @top RETURN SELECT * FROM SomeTable
Поддержка этого была добавлена в SQL Server 2005, но она недоступна в 2000 году. Вместо этого вам придется использовать (дрожать) динамический sql или какой-либо другой числовой прием.
Тест CREATE FUNCTION (@top integer)
СТОЛ ВОЗВРАЩЕНИЯ
AS
ВОЗВРАТ
ВЫБРАТЬ ТОП (@top) * ИЗ SomeTable
GO
Однако без предложения ORDER BY это не имеет особого смысла (порядок результатов не гарантируется).
Джейк, попробуйте установить в rowcount свой параметр функции, а затем сделайте выбор. Я не пробовал это, YMMV.
От: http://msdn.microsoft.com/en-us/library/aa259189(SQL.80).aspx
Синтаксис
SET ROWCOUNT { number | @number_var } Arguments number | @number_var
Число (целое число) строк, которые должны быть обработаны перед остановкой данного запроса.
К сожалению, переменная TOP недоступна в SQL Server 2000. Динамический SQL не поддерживается ни в одной версии.