局部临时表和表变量的重复创建问题随笔

时间:2021-06-20 12:13:43

 

今天遇到一个需求,是根据逻辑判断动态创建局部临时表

 1 局部临时表和表变量的重复创建问题随笔declare   @flag   bit  
 2 局部临时表和表变量的重复创建问题随笔
 3 局部临时表和表变量的重复创建问题随笔 select   @flag = 1  
 4 局部临时表和表变量的重复创建问题随笔
 5 局部临时表和表变量的重复创建问题随笔 -- 当@flag=1时,临时表第2个字段a的类型为float 
 6 局部临时表和表变量的重复创建问题随笔
 7 局部临时表和表变量的重复创建问题随笔 -- 当@flag<>1时,临时表第2个字段a的类型为int 
 8 局部临时表和表变量的重复创建问题随笔
 9 局部临时表和表变量的重复创建问题随笔 if   @flag = 1  
10 局部临时表和表变量的重复创建问题随笔
11 局部临时表和表变量的重复创建问题随笔 begin  
12 局部临时表和表变量的重复创建问题随笔
13 局部临时表和表变量的重复创建问题随笔        create   table  #TemTable(ids  int ,   a  float
14 局部临时表和表变量的重复创建问题随笔
15 局部临时表和表变量的重复创建问题随笔 end  
16 局部临时表和表变量的重复创建问题随笔
17 局部临时表和表变量的重复创建问题随笔 else  
18 局部临时表和表变量的重复创建问题随笔
19 局部临时表和表变量的重复创建问题随笔 begin  
20 局部临时表和表变量的重复创建问题随笔
21 局部临时表和表变量的重复创建问题随笔        create   table  #TemTable(ids  int ,a  int
22 局部临时表和表变量的重复创建问题随笔
23 局部临时表和表变量的重复创建问题随笔 end  
24 局部临时表和表变量的重复创建问题随笔
25 局部临时表和表变量的重复创建问题随笔

 

 

运行时出现错误提示如下:

服务器: 消息 2714,级别 16,状态 1,行 9

数据库中已存在名为 '#TemTable' 的对象。

 

看来创建临时表也和声明变量一样

 

想来想去,考虑了解决方式有2:

 

1.命名2个不同的表名称

#TemTable1#TemTable2

 

2.先创建表的基本结构,再根据条件修改表结构

 1 局部临时表和表变量的重复创建问题随笔declare   @flag   bit  
 2 局部临时表和表变量的重复创建问题随笔
 3 局部临时表和表变量的重复创建问题随笔 select   @flag = 1  
 4 局部临时表和表变量的重复创建问题随笔
 5 局部临时表和表变量的重复创建问题随笔 create   table  #TemTable(ids  int
 6 局部临时表和表变量的重复创建问题随笔
 7 局部临时表和表变量的重复创建问题随笔 if   @flag = 1  
 8 局部临时表和表变量的重复创建问题随笔
 9 局部临时表和表变量的重复创建问题随笔 begin  
10 局部临时表和表变量的重复创建问题随笔
11 局部临时表和表变量的重复创建问题随笔        alter   table  #TemTable 
12 局部临时表和表变量的重复创建问题随笔
13 局部临时表和表变量的重复创建问题随笔               add  a  float  
14 局部临时表和表变量的重复创建问题随笔
15 局部临时表和表变量的重复创建问题随笔 end  
16 局部临时表和表变量的重复创建问题随笔
17 局部临时表和表变量的重复创建问题随笔 else  
18 局部临时表和表变量的重复创建问题随笔
19 局部临时表和表变量的重复创建问题随笔 begin  
20 局部临时表和表变量的重复创建问题随笔
21 局部临时表和表变量的重复创建问题随笔        alter   table  #TemTable 
22 局部临时表和表变量的重复创建问题随笔
23 局部临时表和表变量的重复创建问题随笔               add  a  int  
24 局部临时表和表变量的重复创建问题随笔
25 局部临时表和表变量的重复创建问题随笔 end  
26 局部临时表和表变量的重复创建问题随笔
27 局部临时表和表变量的重复创建问题随笔 go  
28 局部临时表和表变量的重复创建问题随笔
29 局部临时表和表变量的重复创建问题随笔 -- 表结构改变后要重新编译 
30 局部临时表和表变量的重复创建问题随笔
31 局部临时表和表变量的重复创建问题随笔 select   *   from  #TemTable 
32 局部临时表和表变量的重复创建问题随笔
33 局部临时表和表变量的重复创建问题随笔 insert   into  #TemTable 
34 局部临时表和表变量的重复创建问题随笔
35 局部临时表和表变量的重复创建问题随笔        select   1 , 1  
36 局部临时表和表变量的重复创建问题随笔
37 局部临时表和表变量的重复创建问题随笔 drop   table  #TemTable 
38 局部临时表和表变量的重复创建问题随笔

请注意表变量也会有这样的问题

希望上面提到的知识对你有所提示

当然欢迎交流和指正

 

blog:

http://www.cnblogs.com/aierong

author:aierong

email:aierong@126.com