📜  SQL |声明本地临时表

📅  最后修改于: 2021-09-08 15:19:32             🧑  作者: Mango

声明用于创建临时表的本地临时表语句。临时表是其中的行仅对创建表和插入行的连接可见的地方。

句法 –

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 语句不能用于本地临时表。