À l'aide de la table temporaire avec exec @sql dans une procédure stockée

J'ai une procédure stockée et une partie d'entre eux comme ci-dessous:
@DRange est un entrant valeur varchar

declare @sql varchar(max)
set @sql = 'select * into #tmpA from TableA where create_date >= getDate - ' + @DRange + '' and is_enabled = 1'

exec (@sql)

select * from #tmpA

Le problème est que lorsque j'exécute la procédure stockée, un message d'erreur apparaît:
Ne peut pas trouver l'objet "#tmpA" parce qu'il n'existe pas ou vous ne disposez pas des autorisations.

Est-il pas possible d'utiliser la table temporaire et de l'exécuter ou ai-je fais quelque chose de mal?

Pourquoi utiliser du SQL dynamique? Ne pouvez-vous pas normal de requête select * into #tmpA from TableA where create_date >= getDate - @DRange and is_enabled = 1 ? Covert @DRange dans différents type si nécessaire
Parce que j'aurai besoin de combiner les autres paramètres, tels que le nom de base de données dans la requête.

OriginalL'auteur William Tang | 2013-10-24