`

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

阅读更多

 

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

 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

 

分享到:
评论

相关推荐

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

    SQL Server 中的临时表概念、创建和插入数据等问题 SQL Server 中的临时表概念是指名称以井号 (#) 开头的表,如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表有两种类型:本地临时表和...

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

    当创建新用户时,可以为用户分配默认表空间和临时表空间,以便他们在该表空间中创建对象: ```sql CREATE USER my_user IDENTIFIED BY my_password DEFAULT TABLESPACE MY_DATA TEMPORARY TABLESPACE MY_TEMP; ...

    SpringBoot 整合Mybatis 创建临时表

    现在,你可以通过调用`createTempTable`和`queryTempTable`方法来完成临时表的创建和查询。这个例子展示了如何在SpringBoot项目中整合Mybatis,创建并使用临时表进行数据操作。这种方式在处理一些临时性、会话级别的...

    Oracle存储过程中使用临时表

    - **索引和约束**:临时表可以创建索引和约束,但这些对象仅在会话或事务内有效。 - **存储空间**:虽然临时表在会话结束或事务提交后会被清理,但它们仍会占用内存和磁盘空间,因此需要合理使用,以避免资源浪费。 ...

    mysql临时表用法分析【查询结果可存在临时表中】

    MySQL临时表是一种在会话范围内创建的特殊类型的表,它仅对当前会话可见,并在会话结束时自动删除。这种技术在处理复杂查询、中间数据处理或报表生成时非常有用,因为它允许用户将查询结果暂存起来,以便进一步处理...

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

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

    Oracle中临时表的创建

    本文将详细介绍如何在Oracle中创建临时表,并探讨其应用场景以及两种主要类型的临时表:全局临时表(Global Temporary Table)与局部临时表(Local Temporary Table)的区别及其使用方法。 #### 二、Oracle临时表...

    创建和使用临时表.docx

    示例代码展示了如何创建、查询、删除临时表以及使用变量和存储过程来操作临时表。在示例中,声明了变量`@Wokno`和`@Str`,并用`WHILE`循环逐行处理数据。存储过程创建了一个局部临时表`#Tmp`,并在循环中利用动态SQL...

    Oracle 临时表用法

    本文将详细介绍Oracle临时表的创建方法、使用场景以及优缺点,帮助读者更好地理解和运用这一特性。 #### 二、Oracle临时表概述 Oracle临时表是一种特殊的表,用于存储临时数据,通常用于事务处理或特定会话期间的...

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

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

    sql server 临时表详解与示例

    2. **权限问题**: 需要确保有足够的权限来创建、使用和删除临时表。 3. **资源占用**: 使用大量临时表可能会导致`tempdb`数据库的资源紧张。 4. **清理机制**: 了解并正确使用临时表的自动清理机制,避免不必要的...

    存储过程中的临时表使用方法

    局部临时表和全局临时表的创建语法基本相同,区别仅在于标识符的前缀不同。以下是一些示例: ```sql -- 创建局部临时表 CREATE TABLE #tempTable ( ID INT PRIMARY KEY, Name VARCHAR(50) ); -- 创建全局临时表 ...

    Mysql临时表和派生表

    根据存储位置的不同,可以将临时表分为两类:内存临时表和外存临时表。 - **内存临时表(in-memory)**:这种类型的临时表存储在内存中,因此读写速度较快,但不适合存储大量数据或大数据块。 - **外存临时表(on-...

    oracle临时表用法

    Oracle 临时表用法 Oracle 临时表是一种特殊的表结构,它可以在数据库中临时存储...但是,使用临时表时需要注意一些问题,例如避免在存储过程中创建临时表,避免在运行时创建临时表,以免导致数据库中的表数量增加。

    Oracle临时表空间满的解决步骤

    Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表空间...

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

    临时表与常规的永久表非常相似,主要区别在于其创建位置和生命周期。在SQL Server中,临时表是在`tempdb`数据库中创建的,这意味着它们仅在这个特定会话期间可用。 - **创建与生命周期**: - 本地临时表:以`#`...

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

    在SQL Server中,临时表和表变量是两种用于暂存数据的结构,它们在数据库操作中扮演着重要的角色。理解它们的区别有助于优化存储过程和提高性能。 临时表类似于永久表,但它们存在于Tempdb系统数据库中,仅在创建它...

    delphi7实现SQL全局临时表防止用户重复登录

    全局临时表在数据库会话(session)间是可见的,不同于局部临时表,后者只在其创建的会话内可见。当所有引用全局临时表的会话结束时,该表会被自动删除。因此,我们可以利用这一特性来记录用户的登录状态。 以下是...

    创建和使用临时表.pdf

    临时表分为两种类型:局部临时表(以单个井号 # 开头)和全局临时表(以双井号 ## 开头)。它们主要区别在于可见性和生命周期。 1. 局部临时表(#表名): - 只在创建它的会话中可见,其他会话无法访问。 - 当...

    sql临时表相关介绍

    7. **并发问题**:在多用户环境中,本地临时表确保了数据的私密性,而全局临时表则允许跨会话共享数据,但需要注意数据安全和并发控制。 8. **解析与引用**:如果同时存在同名的本地和全局临时表,查询可能无法明确...

Global site tag (gtag.js) - Google Analytics