L'exécution de l'instruction suivante avec SQL Server 2005 (Mes tests via SSMS) aboutit à la réussite de la première exécution et à l'échec des exécutions ultérieures.La sélection échoue avec les colonnes Nonexisitent
IF OBJECT_ID('tempdb..#test') IS NULL
CREATE TABLE #test (GoodColumn INT)
IF 1 = 0
SELECT BadColumn
FROM #test
Ce que cela signifie est que quelque chose compare les colonnes que je suis dans ma déclaration un accès de sélection contre les colonnes qui existent sur une table lorsque le script est « compilé ». Pour mes fins, c'est une fonctionnalité indésirable. Ma question est la suivante: y a-t-il quelque chose qui puisse être fait pour que ce code s'exécute avec succès à chaque exécution, ou si ce n'est pas possible, peut-être que quelqu'un pourrait expliquer pourquoi la fonctionnalité démontrée est souhaitable. Les seules solutions que j'ai actuellement est d'envelopper le select avec EXEC ou select *, mais je n'aime pas l'une ou l'autre de ces solutions.
Merci
J'ai essayé deux solutions dans SQL et les deux échoue avec « nom de colonne non valide « BadColumn »." –
Si l'objet temporaire n'existe pas, alors je peux créer ce proc dbo.test, et l'exécuter à plusieurs reprises Si l'objet temporaire existe, alors vous obtiendrez l'erreur –
+1 pour une bonne explication. table signifie que le BadCOlumn est introuvable et que la "résolution de nom différée" s'applique à l'utilisation ultérieure. – gbn