Ce que vous essayez de faire est possible mais n'utilisez pas votre approche actuelle. Il s'agit d'un problème très courant avec toutes les solutions possibles avant SQL Server 2008 ayant des compromis liés aux performances, à la sécurité et à l'utilisation de la mémoire.
Ce lien montre quelques approches pour SQL Server 2000/2005
SQL Server 2008 prend en charge la transmission d'un paramètre de valeur de table.
J'espère que cela vous aidera.