ich eine Beziehung Zuordnungstabelle wie dieses:SQL löschen Wo Not In
attributeId Bigint
productid Bigint
Beziehungen zu reinigen, die nicht mehr verwendet werden, ich will alle Recors löschen, wo productid = x und attributeId nicht in (@includedIds), wie das folgende Beispiel:
@attributetypeid bigint,
@productid bigint,
@includedids varchar(MAX)
DELETE FROM reltable
WHERE productid = @productid AND
attributetypeid = @attributetypeid AND
attributeid NOT IN (@includedids);
Wenn die SQL mit dem includedids param laufen mehr als 1-ID enthält - wie folgt aus: 25,26 - ich ein SqlException sagen:
Fehler beim Konvertieren des Datentyps varchar in bigint.
Und das ist natürlich aufgrund der in dieser varchar (max) param ...
Wie soll ich meine Delete-Anweisung konstruieren, damit es funktioniert?
Hinweis: Diese Funktion ist nicht für SQL Server 2005 optimiert, da ich die varchar-Größe auf 8000 begrenzt, um mit SQL Server 2000 kompatibel zu sein. Wenn Sie die MAX-Länge benötigen, suchen/ersetzen Sie 8000 für MAX im Skript . – karlgrz
FYI Sie können Ntext als ein Parameter verwenden, die abwärtskompatibel mit SQL 2000 ist, siehe: http://www.sommarskog.se/arrays-in-sql-2000.html –
@ Sambo99: Das ist ein großer Vorschlag. – karlgrz