局部临时表和表变量的重复创建问题随笔
2005-04-22 11:51
447 查看
今天遇到一个需求,是根据逻辑判断动态创建局部临时表
1declare @flag bit
2
3select @flag=1
4
5--当@flag=1时,临时表第2个字段a的类型为float
6
7--当@flag<>1时,临时表第2个字段a的类型为int
8
9if @flag=1
10
11begin
12
13 create table #TemTable(ids int, a float)
14
15end
16
17else
18
19begin
20
21 create table #TemTable(ids int,a int)
22
23end
24
25
运行时出现错误提示如下:
服务器: 消息 2714,级别 16,状态 1,行 9
数据库中已存在名为 '#TemTable' 的对象。
看来创建临时表也和声明变量一样
想来想去,考虑了解决方式有2种:
1.命名2个不同的表名称
#TemTable1和#TemTable2
2.先创建表的基本结构,再根据条件修改表结构
1declare @flag bit
2
3select @flag=1
4
5create table #TemTable(ids int)
6
7if @flag=1
8
9begin
10
11 alter table #TemTable
12
13 add a float
14
15end
16
17else
18
19begin
20
21 alter table #TemTable
22
23 add a int
24
25end
26
27go
28
29--表结构改变后要重新编译
30
31select * from #TemTable
32
33insert into #TemTable
34
35 select 1,1
36
37drop table #TemTable
38
请注意表变量也会有这样的问题
希望上面提到的知识对你有所提示
当然欢迎交流和指正
blog:
http://www.cnblogs.com/aierong
author:aierong
email:aierong@126.com
1declare @flag bit
2
3select @flag=1
4
5--当@flag=1时,临时表第2个字段a的类型为float
6
7--当@flag<>1时,临时表第2个字段a的类型为int
8
9if @flag=1
10
11begin
12
13 create table #TemTable(ids int, a float)
14
15end
16
17else
18
19begin
20
21 create table #TemTable(ids int,a int)
22
23end
24
25
运行时出现错误提示如下:
服务器: 消息 2714,级别 16,状态 1,行 9
数据库中已存在名为 '#TemTable' 的对象。
看来创建临时表也和声明变量一样
想来想去,考虑了解决方式有2种:
1.命名2个不同的表名称
#TemTable1和#TemTable2
2.先创建表的基本结构,再根据条件修改表结构
1declare @flag bit
2
3select @flag=1
4
5create table #TemTable(ids int)
6
7if @flag=1
8
9begin
10
11 alter table #TemTable
12
13 add a float
14
15end
16
17else
18
19begin
20
21 alter table #TemTable
22
23 add a int
24
25end
26
27go
28
29--表结构改变后要重新编译
30
31select * from #TemTable
32
33insert into #TemTable
34
35 select 1,1
36
37drop table #TemTable
38
请注意表变量也会有这样的问题
希望上面提到的知识对你有所提示
当然欢迎交流和指正
blog:
http://www.cnblogs.com/aierong
author:aierong
email:aierong@126.com
相关文章推荐
- 临时表和表变量的重复创建问题
- 解决重复包含一个头文件时变量重复定义的问题
- 函数中返回局部变量的问题
- 创建cocos2d-x的cygwin环境变量问题
- keil中建立多个c文件时,出现*** ERROR LXX: MULTIPLE PUBLIC DEFINITIONS问题(变量重复定义)。
- 局部变量与成员变量的同名问题&显示初始化
- ABAP--动态创建局部类型的变量
- 函数外局部变量 null问题
- C++头文件中为何添加了#ifndef #define #endif还会出现变量重复定义的问题
- 对于下面这个局部变量未初始化就使用的问题int x = x;
- 一个例子玩转linux多线程问题(创建 执行 条件变量 ......)
- 全局变量与局部变量初始化问题
- ABAP--动态创建局部类型的变量
- oracle 使用标签来嵌套使用变量和重复标签的问题
- FragmentTabHost的使用和重复创建问题的优化
- C语言中全局变量的定义及重复包含问题
- pthread_create 参数传递指针问题(创建多线程时,循环变量的传递)
- 09-01函数返回局部变量问题
- 局部内部类引用方法变量时的问题
- android broadcastreceiver 重复创建和无法接受消息问题