【数据库】Sql Server 创建临时表和遍历临时表以及判断临时表是否存在

621 阅读2分钟

我正在参加「掘金·启航计划」

在实际项目开发中,临时表的作用还是很大的
特别是在处理一些复杂逻辑的时候,临时表就发挥很大作用,比如:将旧系统表数据迁移到新系统新数据里,就需要中间表来进行更新,临时表就是最佳选择

  • 主要知识点列表 | 编号 | 语言或插件 | 知识点 | 说明 | | --- | --- | --- | --- | | 1 | sql server | declare | 关键词,定义变量 | | 2 | sql server | while | 关键词,循环,包含的语句使用begin..end,不使用花括号{} | | 3 | sql server | object_id | 用于判断对象是否存在,可用来判断临时表是否已经被创建 | | 4 | sql server | #temp_table | 局部临时表 | | 5 | sql server | ##temp_table | 全局临时表 |

【定义变量方法】

1)关键词 - declare,变量名需要加上@符号前缀

2)变量的赋值使用set关键词

3)定义字符串、整型,如下

declare @id int
declare @name varchar(50)

set @id=1
set @name='张三'

【判断临时表是否存在】

1)临时表的定义的特点就是在名称前加#井号符号

2)加一个#井号变量局部变量,加两个#属于全局变量

3)object_id,判断临时表对象是否存在,如下 object_id('tempdb..#my_table_temp') is not null

if object_id('tempdb..#my_table_temp') is not null begin
	print('存在')
end
else begin
	print('不存在')
end

image.png

【创建临时表】

1)可以先判断是否存在,存在先删除再创建临时表

drop table #my_temp_table

2)创建临时表和创建普通表一样

create table #my_temp_table(字段名 数据类型,...)

3)临时表还有直接创建时赋值

select * into #my_temp_table from 目标表

image.png

【遍历临时表】

1)这里用一个简单的方式,通过top 1配合删除以及exists方式

2)代码语句如下

lare @type_guid varchar(50)
while exists(select type_guid from #my_table_temp) begin
	select top 1 @type_guid=type_guid from #my_table_temp
	delete #my_table_temp where type_guid=@type_guid
end

image.png