Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用with子句时的表范围_Sql_Stored Procedures - Fatal编程技术网

Sql 使用with子句时的表范围

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

下面是我存储过程的一部分

由于对象MyCount无效,我收到错误消息,请告诉我哪里出错

;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