2009-12-20 35 views
22

Sử dụng trình tạo truy vấn vs2008, tôi đang cố gắng để thực hiện một truy vấn mà được một tham số cho "TOP" Command, và sau đó tôi phải đối mặt với một lỗi "Lỗi trong biểu top"SQL: Làm cách nào để sử dụng thông số cho TOP như trong TOP TOP @amount?

trình:

SELECT TOP 5 * FROM dbo.SomeTable 
WHERE SomeColumn = SomeValue 

không hoạt động:

SELECT TOP @param1 * FROM dbo.SomeTable 
WHERE SomeColumn = SomeValue 

alt text http://www.freeimagehosting.net/uploads/f9b9354577.jpg

Trả lời

64

Cần ngoặc, và chỉ cho SQL Server 2005 trở lên

SELECT TOP (@param1) ... 
6

Đối với phiên bản cũ của SQL Server, bạn có thể sử dụng:

SET ROWCOUNT @NumberOfResults 
SELECT * FROM MyTable 
SET ROWCOUNT 0 

However, you should not use this technique on 2008:

Sử dụng SET ROWCOUNT sẽ không ảnh hưởng DELETE, INSERT, và UPDATE báo cáo trong bản phát hành tiếp theo của SQL Server (2008). Không sử dụng SET ROWCOUNT với câu lệnh DELETE, INSERT và UPDATE trong công việc phát triển mới và lập kế hoạch sửa đổi các ứng dụng hiện đang sử dụng . Ngoài ra, đối với các câu lệnh DELETE, INSERT và UPDATE hiện đang sử dụng SET ROWCOUNT, chúng tôi khuyên bạn nên viết lại chúng để sử dụng cú pháp TOP. Để biết thêm thông tin, hãy xem XÓA (Giao dịch-SQL), INSERT (Giao dịch-SQL), hoặc CẬP NHẬT (Giao dịch-SQL).