2010-09-24 4 views
-1

Veuillez me dire comment créer des tables temporaires dans SQL. Je suis nouveau dans cette région.Comment utiliser les tables temporaires dans SQL

+4

Pour quelle base de données? –

+1

btw @Aulul. Si l'une des réponses ci-dessous est la bonne, n'oubliez pas de cliquer sur la grosse coche à côté de la réponse pour que la personne suivante lisant ceci connaisse également la solution. – griegs

Répondre

0

T-SQL En supposant:

DECLARE @ProductTotals TABLE 
(
    ProductID int, 
    Revenue money 
) 

INSERT INTO @ProductTotals (ProductID, Revenue) 
    SELECT ProductID, SUM(UnitPrice * Quantity) 
    FROM [Order Details] 
    GROUP BY ProductID 

UPDATE @ProductTotals 
    SET Revenue = Revenue * 1.15 
WHERE ProductID = 62 

DELETE FROM @ProductTotals 
WHERE ProductID = 60 


SELECT TOP 5 * 
FROM @ProductTotals 
ORDER BY Revenue DESC 

C'est une variable tableau . Il existe également une table en mémoire - au lieu de DECLARE @ProductTotals utilisez CREATE TABLE #ProductTotals.

Utiliser la variable de table pour conserver des données pendant la durée de vie de SPROC/Function.

Utilisation dans la mémoire Tables pour conserver des données sur plusieurs SPROC/SPROC enfants. Doit être explicitement abandonné.

+0

Les tables #ProductTotals sont ** NOT ** en mémoire - elles sont conservées sur le disque. Notez également: bien que les tables #ProductTotals participent aux transactions, @ProductTotals (variables de table en mémoire) ne le font pas, ce qui peut provoquer des surprises. –

+0

@marc_s ouais je ne peux jamais penser au nom des # tables. qu'Est-ce que c'est? est-ce "des tables temporaires". Si c'est le cas, comment s'appellent les @? bon point sur les transactions aussi. – RPM1984

+2

@ProductTotals = variable de table en mémoire; #ProductTotals = table temporaire (sur le disque, uniquement pour cette connexion, après la fermeture de la connexion); ## ProductTotal = table temporaire globale, visible pour toutes les connexions, persistante –

0
SELECT columnNames INTO #temp FROM TableName  
SELECT * FROM #temp  
DROP TABLE #temp 
Questions connexes