Creo que ya entendi, estas ejecutando
Código SQL:
Ver originalEXEC sp_executesql @SQL, N'@key varchar(10)', @KEY
Mandando el valor del parametro y el tipo de dato desde el sp_executesql, ahora porque no lo haces de esta manera:
Código SQL:
Ver originalDECLARE @SQL nvarchar(MAX)
SET @SQL = ' SELECT col1, col2, col3 FROM dbo.' + quotename(@tblname) + ' WHERE keycol = ' + @KEY
EXEC sp_executesql @SQL
Aqui si ocupas otra columna que no sea keycol pues la puedes cambiar directamente:
Código SQL:
Ver originalSET @KEY='mi_nuevo_valor'
SET @SQL = ' SELECT col1, col2, col3 FROM dbo.' + quotename(@tblname) + ' WHERE another_column = ' + CHAR(39) + @KEY + CHAR(39)
EXEC sp_executesql @SQL
O eso no es lo que necesitas???