SQL Server在比较2个变量时出错

时间:2015-09-07 08:12:35

标签: sql sql-server

我如何比较变量@PersoanaAnterioara@PersoanaCurenta

  

' @ PersoanaCurenta' .--错误

附近的语法不正确
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'。

附近的语法不正确

2 个答案:

答案 0 :(得分:1)

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

你开始了如果条件但没有写入。

这就是为什么它会给你错误

‘Incorrect syntax near '@PersoanaCurenta'.

答案 1 :(得分: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