声明用于创建临时表的本地临时表语句。临时表是其中的行仅对创建表和插入行的连接可见的地方。
句法 –
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);
报告错误“Item Gfgt already exists”:
但是,您可以创建一个与现有基表或全局临时表同名的临时表,但首先使用本地临时表。
例子 –
考虑这个序列:
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 语句不能用于本地临时表。