Ich habe eine Zusammenführungs-Anweisung, die immer einen einzelnen Datensatz aktualisieren oder einfügen sollte. Ich möchte die ID dieser Anweisung in einer Variablen speichern. Es sieht so aus:
%Vor%Das funktioniert jetzt nicht, weil Sie @int in der output-Klausel nicht auf diese Weise setzen können. Ich weiß, dass ich ein Versuchbares erstellen und INTO @temptable in der Ausgabe verwenden kann. Aber da ich weiß es ist immer ein einzelner Datensatz möchte ich die ID in einer INT-Variable haben. Ist das überhaupt möglich? Oder bin ich gezwungen, eine Tabellenvariable zu verwenden. Ich hoffe, ich vermisse nur eine gewisse Syntax.
Nein, Sie müssen eine Tabellenvariable mit OUTPUT
verwendenSie können dies jedoch tun ...
%Vor%Die "Zuweisung in UPDATE" wurde a gültige Syntax für SQL Server für eine lange Zeit. Siehe auch MERGE auf MSDN . Beide sagen das:
...
<set_clause>::=
SET
...
@ variable = Ausdruck
Tags und Links sql sql-server merge sql-server-2008