我正在尝试第一次插入输出而无法理解错误消息:
插入错误:列名或提供的值数与表定义不匹配。
目标:我有一个包含许多帐户的巨额索赔表。我想在几个帐户中将值更新为1,并能够显示更新。
所以,我创建了一个@TEMP_tbl,其中包含我想要更新的帐户 * /
DECLARE @TEMP_tbl TABLE(
SORIGCREDITORREFNO VARCHAR(30),
BCLAIMONHOLD INT)
INSERT INTO @TEMP_tbl (SORIGCREDITORREFNO,BCLAIMONHOLD)
VALUES ('1234',0)
-- writing my update statement
DECLARE @MYVAR TABLE ( SORIGCREDITORREFNO VARCHAR(30),BCLAIMONHOLD INT)
UPDATE CLAIM
SET BCLAIMONHOLD = 1
OUTPUT INSERTED.* INTO @MYVAR
WHERE SORIGCREDITORREFNO IN (SELECT SORIGCREDITORREFNO FROM @TEMP_tbl)
SELECT * FROM @MYVAR
-- want to look at my updates
消息213,级别16,状态1,行16插入错误:列名称或 提供的值的数量与表定义不匹配。
答案 0 :(得分:1)
您需要将*替换为字段名称
UPDATE CLAIM
SET BCLAIMONHOLD = 1
OUTPUT INSERTED.SORIGCREDITORREFNO , INSERTED.BCLAIMONHOLD INTO @MYVAR
WHERE SORIGCREDITORREFNO IN (SELECT SORIGCREDITORREFNO FROM @TEMP_tbl)
指定*时,表示CLAIM表中的所有字段,与@MYVAR变量中的字段不匹配