表变量和临时表
--表变量和临时表 |
02 |
----------------------------------- |
03 |
--1. 临时表 (大数据量时适合用临时表) :在存储过程的最后务必将所有的临时表显式删除,先truncate table,然后drop table |
04 |
CREATE TABLE #Tmp (ID INT IDENTITY PRIMARY NOT NULL, WorkNo VARCHAR(50)) --创建临时表 |
05 |
SELECT * FROM #Tmp --查询临时表 |
06 |
INSERT INTO #Tmp VALUES() |
07 |
INSERT INTO #Tmp SELECT ADDR FROM MyTable |
08 |
TRUNCATE TABLE #Tmp --清空临时表所有数据和约束 TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少 |
09 |
DROP TABLE #Tmp |
10 |
|
11 |
--可以创建本地和全局临时表。本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见。 |
12 |
--本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name)。 |
13 |
--除非使用 DROP TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去: |
14 |
--当存储过程完成时,将自动除去在存储过程中创建的本地临时表 |
15 |
|
16 |
--2.表变量:尽可能使用表变量而不使用临时表。表变量是一种特殊的数据类型 |
17 |
-- TABLE 变量有以下优点 |
18 |
--·TABLE 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。 |
19 |
--在其作用域内,TABLE 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。 |
20 |
--但是,TABLE 不能用在下列语句中: |
21 |
-- INSERT INTO table_variable EXEC 存储过程。 |
22 |
-- SELECT select_list INTO table_variable 语句。 |
23 |
--在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量 |
24 |
|
25 |
DECLARE @tb TABLE(ID INT PRIMARY KEY , [Name] VARCHAR(100)) |
26 |
INSERT INTO @tb SELECT MyName FROM MyTable |

浙公网安备 33010602011771号