Tengo una tabla de asignación relación así:SQL Táchese lo que no En
attributeId bigint
idproducto bigint
Para limpiar las relaciones que no se utilizan más, quiero borrar todos los recors donde ProductID = x y no en attributeId (@includedIds), como en el siguiente ejemplo:
@attributetypeid bigint,
@productid bigint,
@includedids varchar(MAX)
DELETE FROM reltable
WHERE productid = @productid AND
attributetypeid = @attributetypeid AND
attributeid NOT IN (@includedids);
al ejecutar el SQL con el parámetro includedids que contiene más de 1 id - como esto: 25,26 - consigo un SqlException diciendo:
Error que convierte el tipo de datos varchar a bigint.
Y eso es, por supuesto, debido a la, en ese parámetro varchar (max) ...
¿Cómo debo construir mi declaración de borrar para hacer que funcione?
Nota: Esta función no está optimizada para SQL Server 2005, ya que he limitado el tamaño varchar a 8000 para que sea compatible con SQL Server 2000. Si necesita la longitud MAX, simplemente busque/reemplace 8000 para MAX en la secuencia de comandos . – karlgrz
FYI puede usar ntext como un parámetro que es compatible con versiones anteriores de sql 2000, consulte: http://www.sommarskog.se/arrays-in-sql-2000.html –
@ sambo99: esa es una gran sugerencia. – karlgrz