2014-11-23 63 views
0

我寫此查詢錯誤EXEC sp_executesql的

DECLARE @Base nvarchar(200) 

SET @Base = 'WITH Base AS (SELECT Id, ROW_NUMBER() OVER (ORDER BY Id DESC) RN FROM'+ QUOTENAME(@SampleWorkTbl)+')' 

EXEC Sp_executesql @Base output 

SELECT Top 15 
    [Id] 
    ,IsLock 
    ,[Title] 
    ,[Desc] 
    ,[ImageAddress] 
    ,[Time] 
FROM 
    [Sorin].[dbo].[News] 
WHERE 
    [Id] IN (SELECT TOP 15 Id 
      FROM Base 
      WHERE RN > ((@Count-1) * 15) 
      ORDER BY Id DESC) 
ORDER BY 
    [Id] DESC 

我的問題在這一行

WHERE [Id] IN (SELECT TOP 15 Id From Base WHERE RN > ((@Count-1)*15) ORDER BY Id DESC) 

Base無法識別。

我該如何解決這個錯誤?

+0

那是一個'CTE'您在動態查詢 – 2014-11-23 08:26:42

+0

使用你的'CTE'是不完整的這個東西。 'CTE'的完整語法是'; WITH CTENAME AS(--query--)從CTE選擇列.....'。你缺少select語句。 – 2014-11-23 08:30:48

+0

@NoDisplayName你能告訴我示例代碼嗎? – 2014-11-23 08:37:38

回答

0

我認爲你正在努力實現

DECLARE @Base NVARCHAR(200) 

SET @Base = 'WITH Base AS (SELECT Id, ROW_NUMBER() OVER (ORDER BY Id DESC) RN FROM' 
      + Quotename(@SampleWorkTbl) + ') 
    select * into ##temp from base' 

EXEC Sp_executesql 
    @Base 

SELECT * 
FROM ##temp 

SELECT TOP 15 [Id], 
       IsLock, 
       [Title], 
       [Desc], 
       [ImageAddress], 
       [Time] 
FROM [Sorin].[dbo].[News] 
WHERE [Id] IN (SELECT TOP 15 Id 
       FROM ##temp 
       WHERE RN > ((@Count - 1) * 15) 
       ORDER BY Id DESC) 
ORDER BY [Id] DESC