Použití dočasných tabulek
K vytvoření dočasných tabulek můžete použít Transact-SQL. Dočasné tabulky mají dva typy:
- Místní dočasné tabulky
- Globální dočasné tabulky
Vytvoření místních dočasných tabulek
K vytvoření tabulek s vymezeným oborem aktuální relace použijte místní dočasné tabulky. To znamená, že vaše dočasná tabulka je viditelná pouze pro vás a když je relace ukončena, tabulka již neexistuje. Více uživatelů může vytvářet tabulky se stejným názvem a nemělo by na sebe žádný vliv.
Pokud chcete vytvořit místní dočasnou tabulku, použijte stejný přístup jako při vytváření běžné tabulky. Před název tabulky byste ale přidali # , že se jedná o místní dočasnou tabulku:
CREATE TABLE #Products (
ProductID INT PRIMARY KEY,
ProductName varchar,
...
);
Vytvoření globálních dočasných tabulek
Můžete také vytvořit globální dočasné tabulky. Globální dočasná tabulka je přístupná napříč všemi relacemi. To ale znamená, že globální dočasná tabulka musí mít jedinečný název, na rozdíl od místní dočasné tabulky. Globální dočasné tabulky se automaticky odstraní, když relace, která je vytvořila, skončí a všechny úkoly odkazující na ně ve všech relacích také skončí. Globální dočasnou tabulku vytvoříte stejným způsobem, jako byste vytvořili místní dočasnou tabulku, s výjimkou toho, že použijete ## místo jediného #, abyste ji zadali jako globální dočasnou tabulku.
CREATE TABLE ##Products (
ProductID INT PRIMARY KEY,
ProductName varchar,
...
);
Vložení a čtení dat z dočasné tabulky
Data můžete vložit do dočasných tabulek (místní i globální) pomocí stejného přístupu jako běžné tabulky pomocí příkazu INSERT. Stačí jen připojit # nebo ## k názvu tabulky. Například:
INSERT #Products (ProductID, ProductName, ProductDescription)
VALUES (1, 'The temporary time leap', 'A novel about temporary time leaping.');
Výsledky můžete načíst také z dočasné tabulky pomocí příkazu SELECT. Pokud chcete například načíst všechny řádky a sloupce pro #Products dočasnou tabulku a uspořádat výsledky podle názvu produktu, spustili byste:
SELECT *
FROM #Products
ORDER BY ProductName;