2 votes

Table temporaire dans SQL Server - une erreur se produit si la requête prend beaucoup de temps à se terminer

Jetez un coup d'œil à la requête suivante.

select * 
into TempTable
from MainTable

select * from TempTable
WAITFOR DELAY '00:00:10'

drop table TempTable

Après avoir exécuté cette requête, j'ouvre une autre fenêtre et j'exécute la requête :

select * 
into TempTable
from MainTable

select * from TempTable

drop table TempTable

Je reçois l'erreur suivante :

Il existe déjà un objet nommé 'TempBucket' dans la base de données.

Supposons qu'il s'agisse d'une partie de la procédure stockée, et qu'elle prenne beaucoup de temps à se terminer. S'il y a un deuxième appel à cette procédure stockée, cette erreur se produira. Comment puis-je corriger cette erreur ?

4voto

Drew R Points 1688

Je suppose que vous utilisez le SGBD MSSQL d'après les balises de votre message. Utilisez une véritable table temporaire : préfixez le nom de la table par '#'. En utilisant cette méthode, la table temporaire n'existera que dans le cadre de la procédure dans laquelle elle a été créée.

select * 
into #TempTable
from MainTable

select * from #TempTable

Aucun dépôt n'est réellement nécessaire mais c'est probablement une meilleure pratique.

3voto

Devart Points 52715

Essayez celui-là -

IF OBJECT_ID (N'tempdb.dbo.#TempTable', 'U') IS NOT NULL
   DROP TABLE #TempTable

SELECT *
INTO #TempTable
FROM dbo.MainTable

SELECT *
FROM #TempTable

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