Microsoft SQL Server
Gebruik van de TEMP-tabel
Zoeken…
Opmerkingen
Tijdelijke tabellen zijn echt heel nuttig.
De tabel kan tijdens runtime worden gemaakt en kan alle bewerkingen uitvoeren die in een normale tabel worden uitgevoerd.
Deze tabellen worden gemaakt in een tempdb-database.
Wanneer gebruikt?
We moeten een complexe join-bewerking uitvoeren.
We doen een groot aantal rijmanipulaties in opgeslagen procedures.
Kan het gebruik van de cursor vervangen.
Dus verhoogt de prestaties.
Lokale Temp-tabel
Zal beschikbaar zijn tot de huidige verbinding voor de gebruiker blijft bestaan.
Automatisch verwijderd wanneer de gebruiker de verbinding verbreekt.
De naam moet beginnen met # (#temp)
CREATE TABLE #LocalTempTable( StudentID int, StudentName varchar(50), StudentAddress varchar(150))
insert into #LocalTempTable values ( 1, 'Ram','India');
select * from #LocalTempTable
Na het uitvoeren van al deze instructies als we het queryvenster sluiten en opnieuw openen en proberen in te voegen en selecteren, wordt er een foutbericht weergegeven
“Invalid object name #LocalTempTable”
Wereldwijde tempotabel
Zal beginnen met ## (## temp).
Wordt alleen verwijderd als de gebruiker alle verbindingen verbreekt.
Het gedraagt zich als een permanente tafel.
CREATE TABLE ##NewGlobalTempTable( StudentID int, StudentName varchar(50), StudentAddress varchar(150)) Insert Into ##NewGlobalTempTable values ( 1,'Ram','India'); Select * from ##NewGlobalTempTable
Opmerking: deze zijn zichtbaar voor alle gebruikers van de database, ongeacht het machtigingsniveau.
Dropping temp-tabellen
Temp-tabellen moeten unieke ID's hebben (binnen de sessie, voor lokale temp-tabellen of binnen de server voor globale temp-tabellen). Als u probeert een tabel te maken met een bestaande naam, wordt de volgende fout geretourneerd:
There is already an object named '#tempTable' in the database.
Als uw query tijdelijke tabellen produceert en u deze meerdere keren wilt uitvoeren, moet u de tabellen verwijderen voordat u ze opnieuw probeert te genereren. De basissyntaxis hiervoor is:
drop table #tempTable
Als u probeert deze syntaxis uit te voeren voordat de tabel bestaat (bijvoorbeeld bij de eerste keer dat uw syntaxis wordt uitgevoerd), veroorzaakt dit een andere fout:
Cannot drop the table '#tempTable', because it does not exist or you do not have permission.
Om dit te voorkomen, kunt u controleren of de tabel al bestaat voordat u deze neerzet, als volgt:
IF OBJECT_ID ('tempdb..#tempTable', 'U') is not null DROP TABLE #tempTable