Sql 使用with子句时的表范围
下面是我存储过程的一部分 由于对象MyCount无效,我收到错误消息,请告诉我哪里出错Sql 使用with子句时的表范围,sql,stored-procedures,Sql,Stored Procedures,下面是我存储过程的一部分 由于对象MyCount无效,我收到错误消息,请告诉我哪里出错 ;With MyCount AS ( Select DispatchToRegionId ,FolderNo, row_number() OVER(ORDER BY FolderNo DESC) as Row from tblTransite where FolderNo = @VAL group by DispatchToRegionId
;With MyCount AS
(
Select DispatchToRegionId ,FolderNo, row_number() OVER(ORDER BY FolderNo DESC) as Row
from tblTransite where FolderNo = @VAL group by DispatchToRegionId,FolderNo
)
select @cnt = COUNT(*) from MyCount
if @cnt = 0
begin
set @InvalidFolderNo = @VAL
print 'cnt -' + cast(@cnt as varchar(max) ) + 'invalid folder - ' + cast(@InvalidFolderNo as varchar(max) )
return
end
select @Region =( Select top 1 DispatchToRegionId from MyCount
order by Row desc )
关于通用表表达式(CTE)的范围,明确说明如下内容:
一旦运行了第一个select查询,就不能再将CTE用于下一个查询。如果您想在多个查询中访问它,您可能需要考虑将数据存储在临时表或表变量中。 < p> <代码> MyCube <代码>仅供第一次查询之后使用。尝试选择此查询中所需的所有内容:
;With MyCount AS
(
Select DispatchToRegionId ,FolderNo, row_number() OVER(ORDER BY FolderNo DESC) as Row
from tblTransite where FolderNo = @VAL group by DispatchToRegionId,FolderNo
)
SELECT
@cnt = (select COUNT(*) from MyCount),
@Region =( Select top 1 DispatchToRegionId from MyCount
order by Row desc )
if @cnt = 0
begin
set @InvalidFolderNo = @VAL
print 'cnt -' + cast(@cnt as varchar(max) ) + 'invalid folder - ' + cast(@InvalidFolderNo as varchar(max) )
return
end
;With MyCount AS
(
Select DispatchToRegionId ,FolderNo, row_number() OVER(ORDER BY FolderNo DESC) as Row
from tblTransite where FolderNo = @VAL group by DispatchToRegionId,FolderNo
)
SELECT
@cnt = (select COUNT(*) from MyCount),
@Region =( Select top 1 DispatchToRegionId from MyCount
order by Row desc )
if @cnt = 0
begin
set @InvalidFolderNo = @VAL
print 'cnt -' + cast(@cnt as varchar(max) ) + 'invalid folder - ' + cast(@InvalidFolderNo as varchar(max) )
return
end