Microsoft SQL Server
Uso della tabella TEMP
Ricerca…
Osservazioni
Le tabelle temporanee sono davvero molto utili.
La tabella può essere creata in fase di esecuzione e può eseguire tutte le operazioni eseguite in una tabella normale.
Queste tabelle sono create in un database tempdb.
Usato quando?
Dobbiamo fare un'operazione di join complessa.
Facciamo un gran numero di manipolazioni di riga nelle stored procedure.
Può sostituire l'uso del cursore.
Così aumenta le prestazioni.
Tabella Temp locale
Sarà disponibile fino a quando la connessione corrente persiste per l'utente.
Eliminato automaticamente quando l'utente si disconnette.
Il nome dovrebbe iniziare con # (#temp)
CREATE TABLE #LocalTempTable( StudentID int, StudentName varchar(50), StudentAddress varchar(150))
insert into #LocalTempTable values ( 1, 'Ram','India');
select * from #LocalTempTable
Dopo aver eseguito tutte queste istruzioni se chiudiamo la finestra della query e la apriamo di nuovo e proviamo ad inserirla e selezionarla mostrerà un messaggio di errore
“Invalid object name #LocalTempTable”
Tabella Temp globale
Comincerà con ## (## temp).
Verrà cancellato solo se l'utente disconnette tutte le connessioni.
Si comporta come un tavolo permanente.
CREATE TABLE ##NewGlobalTempTable( StudentID int, StudentName varchar(50), StudentAddress varchar(150)) Insert Into ##NewGlobalTempTable values ( 1,'Ram','India'); Select * from ##NewGlobalTempTable
Nota: questi sono visualizzabili da tutti gli utenti del database, indipendentemente dal livello di autorizzazioni.
Eliminazione di tabelle temporanee
Le tabelle temporali devono avere ID univoci (all'interno della sessione, per le tabelle temporanee locali o all'interno del server, per le tabelle temporali globali). Cercando di creare una tabella utilizzando un nome già esistente, verrà restituito il seguente errore:
There is already an object named '#tempTable' in the database.
Se la query produce tabelle temporanee e si desidera eseguirla più di una volta, è necessario eliminare le tabelle prima di provare a generarle di nuovo. La sintassi di base per questo è:
drop table #tempTable
Cercando di eseguire questa sintassi prima che la tabella esista (ad es. Alla prima esecuzione della sintassi) causerà un altro errore:
Cannot drop the table '#tempTable', because it does not exist or you do not have permission.
Per evitare ciò, puoi verificare se la tabella esiste già prima di rilasciarla, in questo modo:
IF OBJECT_ID ('tempdb..#tempTable', 'U') is not null DROP TABLE #tempTable