762 votes

Vérifiez si la table temporaire existe et supprimer s’il existe avant de créer une table temporaire

J’utilise le code suivant pour vérifier si la table temporaire existe et supprimer la table si elle existe avant de créer à nouveau. Il fonctionne très bien tant que je ne change pas les colonnes. Si j’ajoute une colonne plus tard, il donnera une erreur disant « colonne non valide ». S’il vous plaît faites le moi savoir ce que je fais mal.

Si je lance le code ci-dessus, il fonctionne très bien. Maintenant, nous allons dire j’ai ajouter une colonne fieldname et utilisez ce champ dans l’instruction select, il donne une erreur.

831voto

pmac72 Points 1906

Je ne peux pas reproduire l’erreur.

Peut-être, je ne comprends pas le problème.

Le suivant fonctionne bien pour moi dans SQL Server 2005, avec la colonne supplémentaire « foo » qui apparaissent dans le résultat de la deuxième sélection :

104voto

SDS Points 141

La déclaration devrait être de l’ordre

  1. Instruction ALTER pour la table
  2. ALLER
  3. Instruction SELECT.

Sans « Aller » dans l’intervalle, tout cela sera considéré comme un seul script et lorsque l’instruction select recherche la colonne, il ne sera pas être trouvé.

Avec « Aller », il examinera la partie du script jusqu'à « Aller » en un seul lot et sera exécuté avant d’entrer dans la requête après « GO ».

29voto

user219628 Points 720

21voto

ivan.sivak Points 346

Juste petit commentaire de mon côté puisque l’OBJECT_ID ne fonctionne pas pour moi (retourne toujours cette #tempTable n’existe pas même si elle existe - mais avec little bit différent nom comme #tempTable___etc.).

Cela fonctionne bien :

10voto

gbn Points 197263

pmac72 utilise GO pour décomposer la requête en lots et à l’aide de ALTER.

Vous semblez être en cours d’exécution du même lot mais il courir deux fois après avoir changé : DROP... CRÉER... edit... LAISSER TOMBER... CRÉER...

Peut-être poster votre code exact donc nous pouvons voir ce qui se passe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X