The syntax for creating the global temporary table is given below:
create table ##
For example, the syntax to create the global temporary table ##employeedetails is given below:
CREATE table ##employeedetails (id int identity(1,1), empFname nvarchar(100), empEname nvarchar(100), empdate datetime)
Create index indx_GTT on ##employeedetails (empFname)
We can also define constraints on the Global temporary tables. For Example
Alter table ##employeedetails add constraint pk_GTT primary key(id)
Similar to physical table and local temporary table, the values in the global temporary table can also be inserted with the help of the Insert command. For example, to insert the value in the global temporary table ## employeedetails , we can use the following SQL Statement:
Insert into ## employeedetails ( empFname , empEname , empdate )
Values ( 'Vivek', ' Johari', getdate())
We can access the global table within the stored procedure in which it is defined and also in the stored procedure which is called inside this stored procedure.
Create procedure test_GTT
as
begin
CREATE table ##employeedetails (id int identity(1,1), empFname nvarchar(100), empEname nvarchar(100), empdate datetime)
exec insert_GTT
select * from ##employeedetails
drop table ##employeedetails
end
Create procedure insert_GTT
as
begin
Insert into ##employeedetails ( empFname , empEname , empdate )
Values ( 'Vivek', ' Johari', getdate())
end
In the above example, we create a global temporary table ##employeedetails
in the stored procedure test_GTT. This procedure call another procedure insert_GTT. The procedure contains the Insert command for the table ##employeedetails. When we execute the procedure test_GTT, it will give the following result.
Global temporary tables are itself dropped when the current user session is closed and no other user is referring to it, but it is better to drop it manually at the end of the block of the code in which it is defined or at the end of the stored procedure in which it is defined.
The global temporary tables can viewed with the help of the system view 'sys.objects'.
SELECT * FROM sys.objects where type='U'
Transactions are also applicable on the Global temporary tables.
Alter procedure test_GTT
as
begin
begin transaction
CREATE table ##employeedetails (id int identity(1,1), empFname nvarchar(100), empEname nvarchar(100), empdate datetime)
exec insert_GTT
rollback
select * from ##employeedetails
drop table ##employeedetails
end
If we execute the above procedure the it will give the following output.
Limitations:-
- We can't use global temporary table inside a SQL Function.
- We can't create triggers on the temporary tables.
- We can't create View on the temporary tables.