2012-05-30 67 views
1

問題的標題可能不是最好的,但我找不到另一個,如果一個模塊找到更準確的問題描述,歡迎編輯它。從EXEC(@sql)檢索值

我需要建立具有類似

SELECT top (value) field, field2 FROM table 

現在前查詢它實際上是從該查詢

SELECT @first = min(field2) FROM (SELECT top (value) field, field2 FROM table) 

這意味着我需要一個子查詢頂部子句中的變量參數dymanic SQL查詢exec(@sql)構建查詢,因爲sql top不採取動態值,但exec(@sql)不允許我檢索參數,據我所知。我已經讀過類似的例子來使用sp_executesql來檢索一個值,但我不能使用頂部子句旁邊的動態值構建查詢,我相信。我能做什麼?

回答

2

如果你的SQL Server 2005或以上,你可以使用一個變量做一個動態的頂部,如果你仍然在2000年,您可以使用SET ROWCOUNT具有可變

2005年及以上的語法

DECLARE @RowCount int -- =25 -- sql server 2008 allows to assign when declaring 
SELECT @RowCount = 25 

SELECT TOP (@RowCount) * FROM table1 

2000語法

DECLARE @RowCount int 
SELECT @RowCount = 25 

SET ROWCOUNT @RowCount 
SELECT * FROM table1 

SET ROWCOUNT 0 -- make sure to set back to 0 otherwise 
       -- queries below will return 25 rows 
2
declare @top int = 10 

select top (@top) field, field2 from table 
+0

感謝固定 - 你只是錯過了投影(場選擇)。 – SliverNinja