我正在参加「掘金·启航计划」
在实际项目开发中,临时表的作用还是很大的
特别是在处理一些复杂逻辑的时候,临时表就发挥很大作用,比如:将旧系统表数据迁移到新系统新数据里,就需要中间表来进行更新,临时表就是最佳选择
- 主要知识点列表 | 编号 | 语言或插件 | 知识点 | 说明 | | --- | --- | --- | --- | | 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
【创建临时表】
1)可以先判断是否存在,存在先删除再创建临时表
drop table #my_temp_table
2)创建临时表和创建普通表一样
create table #my_temp_table(字段名 数据类型,...)
3)临时表还有直接创建时赋值
select * into #my_temp_table from 目标表
【遍历临时表】
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