由于sqlserver 2000 top 时,只支持常量(据说2005支持top函数)。要想直接实现top ?是肯定不可能的了,这里有一个办法仅供参考,不过有点复杂,希望路过的网友提供更好的办法.
CREATE PROCEDURE CustomersTop
(
@TOP VARCHAR(25), -- TOP 子句,也就是参数n
@ORDERBY VARCHAR(500) -- ORDER BY 子句
)
AS
SET NOCOUNT ON
DECLARE @sSQL VARCHAR(500)
SELECT @sSQL = 'SELECT TOP ' + @TOP
SELECT @sSQL = @sSQL + ' * FROM Customers'
SELECT @sSQL = @sSQL + ' WHERE ' + @ORDERBY + ' = 1'
--PRINT @sSQL
EXEC(@sSQL)
SET NOCOUNT OFF
GO