2016-04-01 5 views
2

ich die Ausgabe zum ersten Mal und nicht in der Lage zu verstehen, die Fehlermeldung eingefügt versuchen., wie die Ausgabe eingefügt verwenden * in Tabellenvariable während aktualisieren tut

Insert Error: Column name or number of supplied values does not match table definition.

Ziel: Ich habe einen riesigen Anspruch Tisch mit vielen Konten. Ich möchte einen Wert in einigen Konten auf 1 aktualisieren und die Aktualisierungen anzeigen können.

SO, erstelle ich eine @TEMP_tbl mit den Konten, die ich */

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 

Msg 213, Level 16, State 1, Line 16 Insert Error: Column name or number of supplied values does not match table definition.

Antwort

1

Sie müssen ersetzen * mit Feldnamen aktualisieren möchten

UPDATE CLAIM 
SET BCLAIMONHOLD = 1 
OUTPUT INSERTED.SORIGCREDITORREFNO , INSERTED.BCLAIMONHOLD INTO @MYVAR 
WHERE SORIGCREDITORREFNO IN (SELECT SORIGCREDITORREFNO FROM @TEMP_tbl) 

Wenn Sie angeben, *, bedeutet alle Felder aus der Tabelle CLAIM, die nicht mit Feldern in @MYVAR-Variable

übereinstimmen
Verwandte Themen