首页 > 解决方案 > 列名或提供的值的数量与更新时的表定义不匹配

问题描述

执行存储过程时出现以下错误

消息 213,级别 16,状态 1,过程 dbo.SP_PostYearDataCopy,第 97 行 [批处理开始行 2]
列名称或提供的值的数量与表定义不匹配。

我的存储过程如下所示:

ALTER PROCEDURE [dbo].[SP_PostYearDataCopy]
AS
BEGIN
    -- Declare the variable to be used.
    DECLARE @Year AS INT
    DECLARE @clubYear AS INT

    -- Initialize the variable.
    SET @Year = YEAR(GETDATE()) - 1;
    SET @clubYear = @Year + 1;

    CREATE TABLE #PLAYERTEMP
    (
         PlayerID INT,
         TeamID INT,
         Number INT,
         Year INT
    )

    ---- (STEP 2)
    ---- Create Process for Archiving Team Data and Create next years teams

    CREATE TABLE #TEAMTEMP 
    (
        teamTypeID INT, 
        TeamName VARCHAR(50),
        clubYear VARCHAR(50),
        Age VARCHAR(3), 
        Gender VARCHAR(50),
        Display BIT, 
        CoachID INT,
        CoachAsst INT,
        stateCupID INT,
        Manager VARCHAR(50),
        ManagerID INT,
        LeagueID INT,
        League2ID INT,
        League3ID INT,
        LeagueLink VARCHAR (250),
        LeagueLink2 VARCHAR (250),  
        LeagueLink3 VARCHAR (250),
        Callink VARCHAR (200),
        GotSoccer VARCHAR (250),
        Accomplishments VARCHAR (MAX), 
        Doc varchar(MAX), 
        DocName varchar (200), 
        DocType varchar (5)
    )        

    INSERT INTO #TEAMTEMP
        SELECT 
            teamTypeID, TeamName, clubYear, Age, Gender, Display, 
            CoachID, CoachAsst, stateCupID, Manager, ManagerID, 
            LeagueID, League2ID, League3ID, LeagueLink, LeagueLink2, LeagueLink3, 
            Callink, GotSoccer, Accomplishments, Doc, DocName, DocType
        FROM  
            dbo.Teams
        WHERE 
           (clubYear = @Year) AND (TeamTypeID = 3)

    UPDATE #TEAMTEMP 
    SET clubYear = @clubYear,
        Age = RIGHT(Age, 2) + 1,
        CoachID = NULL,
        CoachAsst = NULL,
        stateCupID = NULL,
        Manager = NULL,
        ManagerID = NULL  <--- LINE 97 --->

标签: sql-serverstored-procedures

解决方案


问题是我没有明确设置字段以将值插入表中。该表添加了两个我忘记的新字段,并且 ID 字段未设置为自动递增,所以我猜它也在寻找该字段的值。

更正这些后,存储过程按预期运行。


推荐阅读