2013-03-25 55 views
0

我想創建一個分頁[主要動機]動態查詢,這裏是我的代碼:如何從動態查詢創建臨時表?

Alter proc proc_GetData 
(
    @TableName varchar(500)='tblPropertyType', 
    @PrimaryKey varchar(500)='Id', 
    @Columns varchar(max)='PropertyType', 
    @WhereCondition varchar(max)='', 
    @RecsPerPage int =3, 
    @Page int=1, 
    @SortColumn varchar(500)='Id', 
    @SortDirection Varchar(56)='asc' 
) 
as 
DECLARE @SQL VARCHAR(MAX) 
DECLARE @DSQL VARCHAR(MAX) 
DECLARE @FirstRec int, @LastRec int 
SET @FirstRec = (@Page - 1) * @RecsPerPage 
SET @LastRec = (@Page * @RecsPerPage + 1) 
select @FirstRec 
select @LastRec 
SET @SQL=' 
SELECT 
ROW_NUMBER() OVER (ORDER BY ' + @SortColumn+ ' '+ @SortDirection +') RowNum,'+ @PrimaryKey +' , ' [email protected] + ' from ' [email protected]+ ' Where 1=1 '+ 
@WhereCondition 

我想要做的是:

  • 首先:惰性所有的記錄從上面的查詢臨時表。
  • 第二個:SELECT * FROM @TEMPResult WHERE RowNum > @FirstRec AND RowNum < @LastRec

回答

-6
SET @SQL='SELECT ROW_NUMBER() OVER 
    (ORDER BY ' + @SortColumn+ ' ' + @SortDirection + ') RowNum, ' + @PrimaryKey + ', ' + @Columns + ' 
    INTO tempTableName 
    FROM ' + @TableName + ' Where 1 = 1 ' + @WhereCondition 
+0

由於其工作請幫我爲我 – 2013-03-25 11:55:40

+4

你是否意識到'INTO tempTableName'不是一個臨時表? – Taryn 2014-10-03 19:18:28

+0

@bluefeet,但它的*名稱*溫度這是重要的,對嗎?這樣沒有人可以使用它。 /諷刺 – swasheck 2014-10-03 19:20:54