O que você está tentando fazer é possível, mas não usando sua abordagem atual. Este é um problema muito comum com todas as soluções possíveis anteriores ao SQL Server 2008, tendo compensações relacionadas ao desempenho, segurança e uso de memória.
Este link mostra algumas abordagens para o SQL Server 2000/2005
SQL Server 2008 suporta a passagem de um parâmetro de valor de tabela.
Eu espero que isso ajude.