sql-server - 列名或提供的值的数量与更新时的表定义不匹配
问题描述
执行存储过程时出现以下错误
消息 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 --->
解决方案
问题是我没有明确设置字段以将值插入表中。该表添加了两个我忘记的新字段,并且 ID 字段未设置为自动递增,所以我猜它也在寻找该字段的值。
更正这些后,存储过程按预期运行。
推荐阅读
- python - 处理强化学习的非法举动
- android - RecyclerView 中不能有多个 GoogleMap
- c - 为什么“分段错误”仍然是C中的一个东西
- java - .bak 文件干扰 VS 代码
- nasm - 无法在 NASM 中打印数字
- django - 使用自定义查找扩展 Django 中的 _range 查找
- r - 为什么 surv_pvalue(或任何其他)函数在 R 中的自定义函数中不起作用?
- javascript - 谁能告诉我为什么这个函数在调用时会抛出错误
- r - 如何使用具有多个参数的 mapply 复制函数来计算方法的功效?
- image - 如何将图像 URL 链接到另一个 URL 以在颤动中显示有关第一个 URL 的一些信息?