2009-04-22 16 views

Respuesta

95

agregar un paréntesis:

SELECT TOP (@NumberOfResultsToReturn) * 
+8

fresca que saber algo nuevo yo mismo, hubiera pensado que requeriría sql dinámico – HLGEM

1

Esto es compatible con SQL Server 2005 y versiones posteriores, pero no en SQL Server 2000. ¿Qué versión está utilizando?

3

SQL Server: Ponga el argumento de parens:

SELECT TOP (@NumberOfResultsToReturn) * 
0

Usted puede tener que utilizar el método RowNumber() en su lugar.

Aquí se muestra un ejemplo:

DECLARE @PageNum AS INT; 
DECLARE @PageSize AS INT; 
SET @PageNum = 2; 
SET @PageSize = 10; 

WITH OrdersRN AS 
(
    SELECT ROW_NUMBER() OVER(ORDER BY OrderDate, OrderID) AS RowNum 
      ,OrderID 
      ,OrderDate 
      ,CustomerID 
      ,EmployeeID 
     FROM dbo.Orders 
) 

SELECT * 
    FROM OrdersRN 
WHERE RowNum BETWEEN (@PageNum - 1) * @PageSize + 1 
        AND @PageNum * @PageSize 
ORDER BY OrderDate 
     ,OrderID; 

EDITAR o puede utilizar paréntesis, ..., que yo desconocía en el momento chicos, gracias :).

0

Me temo que no se puede hacer esto en SQL 2000, pero se puede tratar de construir la consulta

DECLARE @query VARCHAR(500) 
set @query = 'SELECT TOP ' + @NumberOfResultsToReturn + '* FROM table' 
EXEC @query 

No sabía el truco paréntesis para SQL 2005, también gracias chicos,! !!

2

Así es como lo hacía en los viejos tiempos:

SET @@ROWCOUNT = @NumberOfResultsToReturn 
SELECT ........ 
SET @@ROWCOUNT = 0 

Esto funcionará, aunque SELECT TOP (@NumberOfResultsToReturn) es preferible si usted está utilizando el servidor SQL que soporta esta sintaxis:

Cuestiones relacionadas