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?

  1. Dobbiamo fare un'operazione di join complessa.

  2. Facciamo un gran numero di manipolazioni di riga nelle stored procedure.

  3. 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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow