Você não pode usar o
IN
cláusula assim. Ele compila para um único string em seu IN
cláusula. Mas um IN
cláusula precisa separar valores. WHERE id_campo not in (@idcamposexcluidos)
compila para
WHERE id_campo not in ('817,803,495')
mas deve ser
WHERE id_campo not in ('817','803','495')
Para superar isso, use SQL dinâmico ou no MySQL, você pode usar FIND_IN_SET :
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
mas usando uma função como
FIND_IN_SET()
não pode fazer uso de índices.