`

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

阅读更多

 

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

 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

 

分享到:
评论

相关推荐

    学习oracle创建一个表空间创建临时表空间创建用户表空间资源的权限

    oracle创建一个表空间创建临时表空间创建用户表空间资源的权限

    SpringBoot 整合Mybatis 创建临时表

    SpringBoot 整合Mybatis 创建临时表

    SQL Server中关于临时表概念及创建和插入数据等问题

    SQL Server中关于临时表概念及创建和插入数据等问题 本地临时表 全局临时表 在程序中向临时表插入数据时报错……

    Oracle 临时表之临时表的应用问题

     临时表本质上是一种cache的表现形式,Oracle的临时表都是事先建好的,一旦用了临时表,存放的是和本会话相关的数据,没有人会傻乎乎地用临时表来保存本应该共享的数据。  with子查询实际上也是用了临时表,...

    SQLServer中临时表与表变量的区别

    资源名称:SQLServer中临时表与表变量的区别内容简介: 本文档主要讲述的是SQLServer中临时表与表变量的区别;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看。资源截图: 资源太大,传百度网盘了,...

    sql server 临时表详解与示例

    1、局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除。 2、全局临时表(##开头)对...临时表有两种,局部的和全局的.和普通表的表面上的区别就是 分别以#和##开头.她们是保存在磁盘上的tempdb数据库里的

    oracle11g创建临时表空间组

    oracle11gR2创建临时表空间组. 使用临时表空间组而非普通的临时表空间,有如下好处: 由于SQL查询可以并发使用几个临时表空间进行排序操作,因此SQL查询很少会出现排序空间超出,避免当临时表空间不足时所引起的磁盘...

    Oracle 临时表用法

    很好的,经典.创建Oracle 临时表,可以有两种类型的临时表:会话级的临时表,事务级的临时表 。

    Oracle存储过程中使用临时表

    Oracle存储过程中使用临时表 会话级临时表 事务级临时表

    SQLServer中临时表与表变量的区别分析

    在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表  临时表与...

    (X)Linux设置环境变量小结设置永久变量&临时变量 全局变量&局部变量

    Linux设置环境变量小结设置永久变量&临时变量 全局变量&局部变量

    创建临时表用于查询 sql server

    创建临时表用于查询 sql server

    sql server触发器中自动生成的临时表

    此文档中详细的记载了,sql server触发器中自动生成的临时表,希望可以帮到有需要的朋友们!

    ORACLE中临时表

    Oracle 临时表功能介绍: Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时。每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的。

    无法更新临时表的问题

    大家帮忙看看这个品牌维护的表单,在VFP中测试可以,一但连编就显示“不能更新临时表”。无论操作添加还是PAGE2的修改,我不知道是怎么回事,高手帮看看,谢谢!!!!表单和所用的表已上传

    oracle创建临时表空间文档及工具

    oracle创建临时表空间文档及一键导入、导出工具,非常方便

    SQL Server 表变量和临时表的区别(详细补充篇)

    一、表变量  表变量在SQL Server 2000中首次被引入。表变量的具体定义包括列定义,列名,数据类型和约束。而在表变量中可以使用的约束...2.表变量较临时表产生更少的存储过程重编译。 3.针对表变量的事务仅仅在更新

    Oracle中临时表的创建

    目前所有使用Oracle作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都是在百万级以上的数据量。  当然在Oracle中创建分区是一种不错的选择

    MySQL中的两种临时表

     通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表。这种临时表只对当前用户可见,当前会话结束的时候,该临时表会自动关闭。这种临时表的命名与非临时表可以同名(同名后非临时表将对当前会话...

Global site tag (gtag.js) - Google Analytics