SQL Server provides two types of temp tables based on the Scope and Behavior of the table.
- Local Temp Table
- Global Temp Table
Local temp tables are only available to the current connection for the
user; and they are automatically deleted when the user disconnects from
instances. Local temporary table name is stared with
("#") sign.
Global Temporary tables name starts with (
"##").
Once this table has been created by a connection, like a permanent
table it is then available to any user by any connection. It can only be
deleted once all connections have been closed.
As I have already discussed, there are two types of temporary tables available. Here I am going to describe each of them.
Local Temporary Table
The syntax given below is used to create a
local Temp table in SQL Server 2008:
CREATE TABLE #LocalTmpTable(
UserID int,
UserName varchar(50),
UserAddress varchar(150))
The above script will create a temporary table in
tempdb database. We can
insert or
delete records in the temporary table similar to a general table like:
insert into #LocalTmpTable values ( 1, 'Dhirendra','Noida');
Now
select records from that table:
select * from #LocalTmpTable
After execution of all these statements, if you close the query window and again execute
"Insert" or
"Select" Command, it will throw the following error:
Msg 208, Level 16, State 0, Line 1
Invalid object name '#LocalTmpTable'.
This is because the
scope of Local Temporary table is only bounded with the current connection of current user.
Global Temporary Table
The scope of Global temporary table is the same for the entire user for a particular connection. We need to put
"##" with the name of Global temporary tables. Below is the syntax for creating a Global Temporary Table:
CREATE TABLE ##NewGlobalTmpTable(
UserID int,
UserName varchar(50),
UserAddress varchar(150))
The above script will create a temporary table in
tempdb database. We can
insert or
delete records in the temporary table similar to a general table like:
insert into ##NewGlobalTmpTable values ( 1, 'Dhirendra','Noida');
Now select records from Globle temp table:
select * from ##NewGlobalTmpTable