2008-11-12 4 views

ответ

5

Для MS SQL 2000, вы можете использовать:

CREATE FUNCTION Test (@top integer) 

RETURNS TABLE 

AS 

SET ROWCOUNT @top 

RETURN SELECT * FROM SomeTable 
2

Поддержка этого была добавлена ​​в SQL Server 2005, но она недоступна в 2000 году. Вместо этого вам придется использовать (содрогнуться) динамический SQL или какой-либо другой трюк.

+0

... это смешно. ;) – Jake 2008-11-12 16:27:45

1

CREATE FUNCTION Test (целое число) @top

возвращает TABLE

AS

ВОЗВРАТ

Выбор TOP (@top) * ОТ SomeTable

GO

Однако без предложения ORDER BY это не очень m eaningful (порядок результатов не гарантируется).

0

К сожалению, переменная TOP недоступна в SQL Server 2000. Также Dynamic SQL не поддерживается в любой версии.

0

Джейк, попробуйте установить сверку для вашего параметра функции, а затем делает ваш выбор. Я не пробовал это, YMMV.

От: http://msdn.microsoft.com/en-us/library/aa259189(SQL.80).aspx

Синтаксис

SET ROWCOUNT { number | @number_var } 
Arguments 

number | @number_var 

ли число (целое число) строк, подлежащих обработке перед остановкой данного запроса.

+0

Вы не можете использовать set rowcount в пользовательской функции – Seibar 2008-12-08 17:35:07