La table de temp est présente dans le tempdb

J'essaye de créer une procédure stockée à l'intérieur de laquelle je crée une table temporaire avec quelques fies (juste pour qu'entité cadre identifie les champs de return autrement elle renvoie seulement int) et quand j'exécute ma procédure stockée #EmpTab est créer et dit que La table existe déjà, même si je la supprime manuellement. Une fois que je cours sp alors il dit la même chose.

alter proc test as begin IF OBJECT_ID('tempdb..#EmpTab ') IS NOT NULL BEGIN DROP TABLE #EmpTab END create table #EmpTab ( ID int, Name varchar(20), ); select empId, EmpName into #EmpTab from employee; select * from #EmpTab ; drop table #EmpTab ; end 

  IF you check your script you will find #EmpTab Is Getting Created Twice 1)1st time you create Temp Table. 2)While Inserting Data INTO Temp Table. Both time you Create Same Temp_Table. CREATE proc test AS BEGIN SET NOCOUNT ON SELECT empId, EmpName INTO #EmpTab FROM employee; SELECT * FROM #EmpTab ; DROP TABLE #EmpTab ; SET NOCOUNT OFF END 

SELECT ... INTO crée la table temporaire. CREATE TABLE .

Soit se débarrasser de la CREATE TABLE explicite ou replace le SELECT ... INTO par un INSERT si vous voulez conserver le create explicite.

BTW il n'y a pas besoin d'une table temporaire ici de toute façon. L'set du code de procédure pourrait être remplacé par

 select empId, EmpName from employee; 

Est-ce juste une procédure de test avec un code fictif?

Utilisez Insérer dans, car une table a déjà été créée

 Insert into #Emptab(ID,Name) select empId, EmpName from employee; 

Essayez d'utiliser le code ci-dessous:

  alter proc test as begin IF OBJECT_ID('tempdb..#EmpTab ') IS NOT NULL BEGIN DROP TABLE #EmpTab END create table #EmpTab ( ID int, Name varchar(20), ); Insert into #Emptab(ID,Name) select empId, EmpName from employee; select * from #EmpTab ; drop table #EmpTab ; end