另一个必须声明标量变量Error

时间:2014-02-21 11:45:07

标签: tsql

我一直在尝试使用游标和子字符串函数修改临时表中的数据。当我通过选择执行所有单独的步骤时,一切正常,但是只要我将它们放在一起并启动它就会给出错误消息:必须声明标量变量“@ tempvar1”。这些似乎不是两个或更多批次,我无法弄清楚它为什么不起作用。

declare @temptabulka table
(
ID_Studenta uniqueidentifier,
NAME varchar(120)
)
Insert into @temptabulka (ID_Studenta, NAME) SELECT ID_Studenta,NAME FROM STUDENTS

DECLARE @tempvarA varchar(120)
DECLARE @tampvar1 varchar(120)

DECLARE prvykurzor CURSOR FOR
SELECT NAME
FROM @temptabulka

OPEN prvykurzor
FETCH NEXT FROM prvykurzor INTO @tempvar1

WHILE @@FETCH_STATUS = 0
BEGIN
SET @tempvarA = @tampvar1
SET @tempvarA = substring(@tempvarA,0,
            CASE            
               WHEN patindex('%_Nez. Priez %',@tempvarA)=0  
                THEN len(@tempvarA)+1
               ELSE patindex('%_Nez. Priez %',@tempvarA)        
            END
             )    

UPDATE @temptabulka SET NAME = @tempvarA
WHERE NAME = @tampvar1
FETCH NEXT FROM prvykurzor INTO @tempvar1
END

CLOSE prvykurzor
DEALLOCATE prvy_cursor

1 个答案:

答案 0 :(得分:2)

您已将变量声明为tampvar1而非tempvar1,并使用错误的名称。将所有tampvar1替换为tempvar1,您应该没问题。

此处:DECLARE @tampvar1 varchar(120)

此处:SET @tempvarA = @tampvar1

此处:WHERE NAME = @tampvar1