2015-09-07 58 views
0

如何比较变量@PersoanaAnterioara@PersoanaCurenta? '@PersoanaCurenta'.--errorSQL Server在比较两个变量时出错

附近

不正确的语法

drop table #MyTmpData 
DECLARE 
    @PersoanaCurenta nvarchar(100), 
    @PersoanaAnterioara nvarchar(100), 
    @Cunostinte nvarchar(50), 
    @CunostinteTotale nvarchar(max) , 
    @ok int 

select row_number() over (order by persoana) as RowID, a.* 
into #MyTmpData 
from ex..tpersoane a 
Declare @Step int 
Declare @count int 
set @count=(select count(RowId) from #MyTmpData) 
set @Step = 0 
set @ok=0 
set @PersoanaCurenta=null 
set @PersoanaAnterioara=null 
while (@count > @Step) 
BEGIN 
    SET @Step = @Step + 1 
    select @PersoanaCurenta=persoana , @Cunostinte = cunostinte 
    from #MyTmpData 
    where @Step=RowID 

if @PersoanaAnterioara is not null and @PersoanaAnterioara != @PersoanaCurenta 



end 

附近有语法错误@PersoanaCurenta“。

+1

'@PersoanaAnterioara!= @PersoanaCurenta'是有效的语法进行比较。 'IF'条件中缺少'Statement' –

回答

1

在最后一行的查询中缺少BEGIN END块。

您开始如果条件但没有写入它。

这就是为什么它给你错误

‘Incorrect syntax near '@PersoanaCurenta'. 
0

下面的查询运行良好:

     DECLARE 
         @PersoanaCurenta nvarchar(100), 
         @PersoanaAnterioara nvarchar(100), 
         @Cunostinte nvarchar(50), 
         @CunostinteTotale nvarchar(max) , 
         @ok int 
        set @PersoanaCurenta=null 
        set @PersoanaAnterioara=null 
        if @PersoanaAnterioara is null and @PersoanaAnterioara != @PersoanaCurenta 
        SELECT 1 

        ELSE 
        SELECT 2 

所以,请重新检查你的问题。只是试试这个,它会工作:

     drop table #MyTmpData 
         DECLARE 
          @PersoanaCurenta nvarchar(100), 
          @PersoanaAnterioara nvarchar(100), 
          @Cunostinte nvarchar(50), 
          @CunostinteTotale nvarchar(max) , 
          @ok int 

         select row_number() over (order by persoana) as RowID, a.* 
         into #MyTmpData 
         from ex..tpersoane a 
         Declare @Step int 
         Declare @count int 
         set @count=(select count(RowId) from #MyTmpData) 
         set @Step = 0 
         set @ok=0 
         set @PersoanaCurenta=null 
         set @PersoanaAnterioara=null 
         while (@count > @Step) 
         BEGIN 
          SET @Step = @Step + 1 
          select @PersoanaCurenta=persoana , @Cunostinte = cunostinte 
          from #MyTmpData 
          where @Step=RowID 

         if @PersoanaAnterioara is not null and @PersoanaAnterioara != @PersoanaCurenta 
         SELECT 1 
         ELSE 
         SELECT 2 
         end