声明用于创建临时表的本地临时表语句。临时表是其中临时表仅对创建表并插入行的连接可见的地方。
句法 –
DECLARE LOCAL TEMPORARY TABLE table-name
( column-name [ column-value ] );
例子 :
DECLARE LOCAL TEMPORARY TABLE TempGeek ( number INT );
INSERT INTO Geeks
VALUES (1), (2), (3), (4);
Select *
from TempGeek;
number |
---|
1 |
2 |
3 |
4 |
创建本地临时表后,只要存在临时表,就不能再创建该名称的另一个临时表。
例子 –
您可以输入以下内容来创建本地临时表:
declare local temporary table Geektable
如果随后尝试选择“ Geektable”或再次声明Geektable,则会收到一条错误消息,指出Geektable已存在。
声明临时表时,请排除所有者规范。
如果在同一会话中除了DECLARE LOCAL TEMPORARY TABLE语句之外还指定了相同的owner.table,则会报告语法错误。
例子 –
DECLARE LOCAL TEMPORARY TABLE user1.Gfgt(col1 int);
DECLARE LOCAL TEMPORARY TABLE user.Gfgt(col1 int);
报告“项目Gfgt已经存在”错误:
但是,您可以创建一个名称与现有基本表或全局临时表相同的临时表,但是首先使用本地临时表。
例子 –
考虑以下顺序:
CREATE TABLE Geeks (num int);
INSERT INTO Geeks VALUES (9), (8) ;
num |
---|
9 |
8 |
DECLARE LOCAL TEMPORARY TABLE Geeks(num int);
INSERT INTO Geeks VALUES (6), (7);
num |
---|
6 |
7 |
SELECT *
FROM Geeks;
输出 :
返回的结果是
num |
---|
6 |
7 |
对Geeks的任何引用均指本地临时表Geeks,直到通过连接删除本地临时表为止。
ALTER TABLE和DROP INDEX语句不能在本地临时表上使用。