2012-03-13 19 views
29

cos'è una variabile di tabella? E come creare una variabile di tabella (tabella di memoria virtuale) con colonne che corrispondono al set di risultati di stored procedure esistente.Creazione variabile di tabella in SQL server 2008 R2

Ho eseguito la procedura e, dopo averla eseguita, sono noti i nomi delle colonne. Ma devo dichiarare lo stesso tipo di dati delle colonne come era nella stored procedure?

EDIT: Ho provato questo

DECLARE @Table TABLE( 
name varchar(30) NOT NULL, 
location varchar(30) NOT NULL 
); 

INSERT @Table 
SELECT name, location FROM 
Exec SPROC @param , @param 
+6

Solo una parola di avvertimento: non è garantito che una variabile di tabella sia in memoria. Questo è un mito. – JohnFx

+0

Puoi includere il codice che hai fino ad ora in modo che possiamo rispondere alla tua domanda? – JohnFx

+0

@JohnFx Non ho eseguito il codice per la creazione della variabile di tabella. Ho creato una procedura memorizzata e dopo averla eseguita ho ottenuto alcuni nomi di colonne, ora voglio che quei nomi di colonna siano memorizzati nella variabile di tabella. E se non è sempre in memoria, come posso trovarlo nel mio database, Scusa per il disturbo sono nuovo su SQL. Per favore aiuto. – Pankaj

risposta

29

@tableName variabili di tabella sono vivi per la durata dello script in esecuzione unica vale a dire che sono solo gli oggetti a livello di sessione.

Per verificarlo, aprire due finestre di editor di query in sql server management studio e creare variabili di tabella con lo stesso nome ma con strutture diverse. Avrai un'idea. L'oggetto @tableName è quindi temporaneo e utilizzato per l'elaborazione interna dei dati e non contribuisce alla struttura effettiva del database.

C'è un altro tipo di oggetto tabella che può essere creato per uso temporaneo. Sono #tableName oggetti dichiarati come simile dichiarazione creare per le tabelle fisiche:

oggetto
Create table #test (Id int, Name varchar(50)) 

Questa tabella viene creato e memorizzato nel database temporaneo. A differenza del primo, questo oggetto è più utile, può archiviare grandi dati e prende parte alle transazioni, ecc. Queste tabelle sono vere finché la connessione non è aperta. Devi eliminare l'oggetto creato seguendo lo script prima di ricrearlo.

IF OBJECT_ID('tempdb..#test') IS NOT NULL 
    DROP TABLE #test 

Spero che questo abbia senso!

+1

Finalmente fatto con questa parte. :) – Pankaj

Problemi correlati