Ho una tabella di mappatura relazione come questa:SQL Cancellare la dicitura inutile In
AttributeID bigint
productid bigint
Per pulire le relazioni che non vengono utilizzati più, voglio cancellare tutti recors dove productid = x e AttributeID non in (@includedIds), come il seguente esempio:
@attributetypeid bigint,
@productid bigint,
@includedids varchar(MAX)
DELETE FROM reltable
WHERE productid = @productid AND
attributetypeid = @attributetypeid AND
attributeid NOT IN (@includedids);
Quando si esegue il codice SQL con il parametro includedids contenente più dell'1 id - come questo: 25,26 - ho uno SqlException dicendo:
Errore durante la conversione del tipo di dati varchar in bigint.
E questo è, naturalmente, a causa della, in quel varchar (max) param ...
Come devo costruire la mia dichiarazione di eliminazione per farlo funzionare?
Sidenote: questa funzione non è ottimizzata per SQL Server 2005, in quanto ho limitato la dimensione varchar a 8000 per essere compatibile con SQL Server 2000. Se si richiede la lunghezza MAX, solo Trova/Sostituisci 8000 per MAX nello script . – karlgrz
FYI puoi usare ntext come parametro che è retrocompatibile con sql 2000, vedi: http://www.sommarskog.se/arrays-in-sql-2000.html –
@ sambo99: Questo è un grande suggerimento. – karlgrz