Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 server 关键字“set”和with子句附近的语法不正确_Sql Server_Tsql - Fatal编程技术网

Sql server 关键字“set”和with子句附近的语法不正确

Sql server 关键字“set”和with子句附近的语法不正确,sql-server,tsql,Sql Server,Tsql,我有如下的存储过程逻辑。我明白了 关键字“set”附近的语法不正确 由于错误,请向我建议解决方案 Declare @VAL int Declare @Region bigint drop table Tempqq Select * Into Tempqq From dbo.split(@SpokeFolderList, ',') while (Select Count(*) From Tempqq) > 0 begin Select Top 1 @VAL = Tempq

我有如下的存储过程逻辑。我明白了

关键字“set”附近的语法不正确

由于错误,请向我建议解决方案

Declare @VAL int
Declare @Region bigint

drop table Tempqq

Select * Into Tempqq From dbo.split(@SpokeFolderList, ',')

while (Select Count(*) From Tempqq) > 0
begin
       Select Top 1 @VAL = Tempqq.val From Tempqq

        ;With MyCount AS
        ( 
            Select DispatchToRegionId ,FolderNo, row_number() OVER(ORDER BY FolderNo DESC) as Row 
            from tblTransite where FolderNo = @VAL  group by DispatchToRegionId,FolderNo
        )
        set @Region =( Select  top 1 DispatchToRegionId  from MyCount
                        order by Row desc  )

         print @VAL
         Delete Tempqq Where Tempqq.val = @VAL
 end
CTE更像一个视图,而不是一个存储过程。没有 似乎语法正确

和Delete应该有一个From关键字

试试这个

Declare @VAL int
Declare @Region bigint

Drop table Tempqq
Select * Into Tempqq From dbo.split(@SpokeFolderList, ',')

While (Select Count(*) From Tempqq) > 0
Begin
       Select Top 1 @VAL = Tempqq.val From Tempqq   
       ;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 @Region =(Select  top 1 DispatchToRegionId  from MyCount order by Row desc)    
       Print @VAL
       Delete From Tempqq Where Tempqq.val = @VAL
 End
试试这个

Declare @VAL int
Declare @Region bigint

drop table Tempqq

Select * Into Tempqq From dbo.split(@SpokeFolderList, ',')

while (Select Count(*) From Tempqq) > 0
begin
       Select Top 1 @VAL = Tempqq.val From Tempqq

        ;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  top 1 DispatchToRegionId into @Region  from MyCount
                        order by Row desc

         print @VAL
         Delete Tempqq Where Tempqq.val = @VAL
 end

使用Select而不是Set。该删除应该有一个from,即delete from TEMPQSELECT对我的作用大于X。。。。全部@Thanosmarkou:但是:不要以;作为前缀;。分号;用于终止语句@一匹没有名字的马,如果我去掉它;我在“MyCount”附近得到错误的语法。如果这是一个公共表表达式,则需要使用分号显式终止前面的语句。