Vérifier si la colonne existe dans la table temporaire renvoie toujours false dans SQL Server

J'ai la suite de l'Exécution de l'énoncé, ce qui crée un tableau (à l'aide de données provenant d'une autre procédure), insère les valeurs dans une table temporaire, ajoute une colonne image (parce qu'ils ne peuvent pas être inclus dans le groupement), puis des mises à jour sur la base de critères à partir d'une autre table temporaire (la table résultante des champs est utilisé dans un rapport SSRS, j'ai donc besoin de conserver le type de données IMAGE):

EXEC ('SELECT ' + @COL_TO_GROUP_BY + @COL_ADDITONAL + @sColVals + ' INTO
#RESULTS_TABLE from (' + @SQL_STATEMENT + ') A ' + @WHERE_CLAUSE + ' GROUP BY ' +
@COL_TO_GROUP_BY +

' ALTER TABLE #RESULTS_TABLE
ADD IMAGE_DATA IMAGE

IF EXISTS(SELECT * FROM tempdb.INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 
''COLUMN_A'' and TABLE_NAME LIKE ''#RESULTS_TABLE%'')
BEGIN
    UPDATE #RESULTS_TABLE
    SET IMAGE_DATA = FILE_DATA
    FROM #RESULTS_TABLE A, #IMAGE_TABLE B 
    WHERE A.COLUMN_A = B.COLUMN_A
END

SELECT * FROM #RESULTS_TABLE')

Le problème est que, indépendamment de savoir si COLUMN_A existe ou pas, la colonne de IMAGE_DATA est toujours NULL. Est-il un autre moyen d'obtenir des données dans le IMAGE_DATA de la colonne? S'il vous plaît aider!

Note: je vais pas accepter toutes les réponses qui en conclure que le problème est lié au contenu dans d'autres tableaux, plus précisément de la clause where. J'ai fait de multiples validations afin de s'assurer que les conditions peuvent être à la fois vrai et faux (correspondance lignes, pas de lignes correspondantes, etc..). Donc, ce qui exclut l'instruction conditionnelle. Merci.

EDIT:

Je ne suis pas encore totalement sûr de ce que la cause exacte de cela, mais j'ai fini par créer une table temporaire globale et a couru deux procédures distinctes, maintenant, il semble fonctionner correctement. J'ai dû accepter la réponse la plus étroitement appariés ma propre solution. Toutes les réponses et les commentaires ont été très viable. Merci!

Tout d'abord, je voudrais essayer d'omettre la condition WHERE A.COLUMN_A = B.IMAGE_VALUE il semble que pour moi, c'est suffisant pour trouver la ligne droite par OBJ_ID
Merci pour cette remarque. Dans mon cas, j'ai besoin d'avoir les deux conditions, car il y a quelques lignes à double OBJ_IDs. J'ai simplifié mon code d'origine et aurait pris trop car il n'a pas l'air trompeuse. Je vais modifier la question.
Vous ne savez pas si cela aide, mais je pense que vous pouvez ajouter l'image dans la colonne select, comme ce cast(null as Image) as IMAGE_DATA sans avoir à ajouter à la clause group by, car il est une constante. BTW, pourquoi avez-vous besoin de tester si la colonne existe?
Eriksson - Ajout de la distribution vont tout simplement me permettre de supprimer l'instruction ALTER TABLE. Bien que plus efficace, ne résout pas mon problème. Merci pour l'astuce! Je dois vérifier que la colonne n'existe que parce que je suis en tirant les colonnes dynamiques à partir d'une autre procédure et IMAGE_DATA est renseigné en fonction de si la colonne existe ou pas. J'ai édité la question pour la rendre plus dépendante de la colonne en cours de vérification.

OriginalL'auteur Carmen W | 2011-06-13