【问题标题】:Cursorfetch: The number of variables declared in the INTO list must match that of selected columns [Different Dup]Cursorfetch:INTO 列表中声明的变量数量必须与所选列的数量相匹配 [不同重复]
【发布时间】:2020-01-29 07:42:03
【问题描述】:

当我检查变量数量是否正确匹配时,我试图弄清楚为什么 SQL 会抛出此错误。和if语句有关系吗?

DECLARE 
    @ServerName VARCHAR(30),
    @SiteCode VARCHAR(4);

DECLARE SiteList CURSOR FAST_FORWARD
FOR SELECT 
        Cinema_strServerName, 
        Cinema_strCode 
    FROM 
        tblCinema;

OPEN SiteList;

FETCH NEXT FROM SiteList INTO 
    @ServerName, 
    @SiteCode;

WHILE @@FETCH_STATUS = 0
BEGIN

 -- Add Server Names To Exclude
 IF @ServerName IN ('test')
    BEGIN

        PRINT 'COPY \\' + @ServerName + 


    END


FETCH NEXT FROM SiteList INTO @ServerName
END

CLOSE SiteList
DEALLOCATE SiteList

错误

Cursorfetch:INTO 列表中声明的变量数量必须与所选列的数量匹配

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    在您的第二次提取中(在循环结束时),您仍然有一个变量:

    FETCH NEXT FROM SiteList INTO @ServerName
    END
    
    CLOSE SiteList
    DEALLOCATE SiteList
    

    为了避免这样的错误,我通常使用不同的光标模式:https://dba.stackexchange.com/questions/252602/sql-server-cursors-missing-afterthought-safeguard-against-infinite-looping/252616#252616

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-06
      • 2013-08-24
      • 1970-01-01
      • 2020-01-15
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多