Sql server 2008 SQL中公共表表达式内的Execute语句

Sql server 2008 SQL中公共表表达式内的Execute语句,sql-server-2008,common-table-expression,Sql Server 2008,Common Table Expression,当我试图在公共表表达式中使用execute语句时,我遇到了一个错误。我已经给出了下面的代码。请帮我解决这个问题 set @SQLStatement = 'select * from [Customers].[dbo].[Customer]'; with cte as ( exec (@SQLStatement) ), cte1 as ( select ROW_NUMBER() OVER (ORDER BY (select null)) AS RowNumber,* from cte ) se

当我试图在公共表表达式中使用execute语句时,我遇到了一个错误。我已经给出了下面的代码。请帮我解决这个问题

set @SQLStatement = 'select * from [Customers].[dbo].[Customer]';

with cte as 
(
exec (@SQLStatement)
),
cte1 as
(
select ROW_NUMBER() OVER (ORDER BY (select null)) AS RowNumber,* from cte
)
select * from cte1
这是我的sp

ALTER PROCEDURE [dbo].[Get] 
@StartIndex int, 
@EndIndex int, 
@SQLStatement varchar(max) 
AS 
BEGIN 



;with cte as 
(

exec (@SQLStatement)

),
cte1 as
(
select ROW_NUMBER() OVER (ORDER BY (select null)) AS RowNumber,* from cte
)
select * from cte1 where RowNumber between @StartIndex and @EndIndex 

END 

你不能用cte做那件事。cte是一个内联视图,而不是一个可以容纳任何内容的容器。从您发布的内容来看,我认为不需要动态sql。在您的实际情况中,您应该考虑使用临时表而不是cte。您是从哪里想到可以在cte中使用动态sql的?。因为这是不可能的,所以你应该解释一下你想从整体上做什么,这样我们就可以帮上忙Hi,我正在处理一个存储过程,它将从select语句返回所需的行数,例如,你的select语句返回了一百万行,我只需要从1到2000的行。我创建了以下sp,它将select query作为参数,startindex和ENDIXE作为其他参数,所有这些都是动态的
ALTER PROCEDURE [dbo].[Get] 
@StartIndex int, 
@EndIndex int, 
@SQLStatement varchar(max) 
AS 
BEGIN 



;with cte as 
(

exec (@SQLStatement)

),
cte1 as
(
select ROW_NUMBER() OVER (ORDER BY (select null)) AS RowNumber,* from cte
)
select * from cte1 where RowNumber between @StartIndex and @EndIndex 

END 
ALTER PROCEDURE [dbo].[Get] 
@StartIndex int, 
@EndIndex int, 
@WhereStmt varchar(max) 
AS 
BEGIN
execute('
;with cte as 
(
select * from customer '+ @WhereStmt+'
),
cte1 as
(
select ROW_NUMBER() OVER (ORDER BY (select null)) AS RowNumber,* from cte
)
select * from cte1 where RowNumber between '+@StartIndex+' and '+  @EndIndex+' 
')
END