- 浏览: 82012 次
- 性别:
- 来自: dg
文章分类
- 全部博客 (70)
- [随笔分类]DB(数据库) (18)
- c# (1)
- 实用参考代码 (1)
- 默认收藏夹 (9)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (1)
- xml&web服务 (1)
- [随笔分类]Asp.net (18)
- C# BLOG (1)
- 技术仓库 (0)
- .net (1)
- 编程技巧 (1)
- [随笔分类].Net Framework (1)
- [随笔分类]程序人生(非技术) (1)
- [随笔分类]其他技术类 (1)
- [随笔分类]WAP (1)
- 收藏夹 (1)
- 其他 (1)
- DotNet技术 (4)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (4)
- [网站分类]7.提问区(建议在<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>中提问) (2)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (1)
- [随笔分类]Javascript & Css & Html (1)
最新评论
今天遇到一个需求,是根据逻辑判断动态创建局部临时表
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
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
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
发表评论
-
MS SQL数据库备份和恢复存储过程(加强版本)
2004-05-20 13:55 774上次写了MS SQL数据库备份和恢复存储过程详细情况见(htt ... -
求每组前2名,你有几种方法?(MS SQL2000)
2004-08-23 11:55 919create table abc( i nvarchar(10 ... -
ORDER BY排序后,表中字段相加的困惑?
2005-02-03 16:38 1001在sql server2000自带DB-pubs 运行下面的s ... -
sql server中UNION 运算符随笔(几个需要注意的地方小总结)
2005-03-03 11:35 1102UNION 运算符是将两个或更多查询的结果组合为单个结果集 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TRY…CATCH
2007-12-03 13:56 750Transact-SQL 代码中的错误可使用 TRY…CATC ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
2007-12-03 14:57 776sql server2005新增加了2大数据类型: 1.大值数 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TOP 运算符
2007-12-03 16:49 758TOP 运算符介绍:TOP 运算符在Sql Serve ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
2008-07-31 14:52 896公用表表达式是Sql Server ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-APPLY 运算符
2008-08-13 15:07 820APPLY 运算符简介: APPLY 运算符是Sql Serv ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-窗口函数(OVER)
2008-08-26 07:53 9321.简介: SQL Server 2005中的窗口函数帮助你迅 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-DDL触发器
2008-09-02 07:48 8811.简介:Sql Server2005新增加了DDL触发器。与 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
2008-09-03 07:49 736Microsoft SQL Server 2005扩展了SQL ... -
sqlserver日期推算(年,季度,月,星期推算)
2008-11-19 19:20 2224DECLARE @dt datetimeSET @dt=GET ... -
sqlserver字符串拆分(split)方法汇总
2008-11-19 20:06 6909--方法0:动态SQL法declare @s varchar( ... -
sqlserver字符串合并(merge)方法汇总
2008-11-19 20:23 3615--方法1--使用游标法进行字符串合并处理的示例。--处理的数 ... -
sqlserver排序规则在拼音处理中的应用
2008-11-21 08:53 1074--1. 按拼音排序DECLARE @t TABLE(co ... -
sqlserver排序规则在全角与半角处理中的应用
2008-11-21 09:41 1214--1.查询区分全角与半角字符--测试数据DECLARE ...
相关推荐
SQL Server 中的临时表概念、创建和插入数据等问题 SQL Server 中的临时表概念是指名称以井号 (#) 开头的表,如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表有两种类型:本地临时表和...
当创建新用户时,可以为用户分配默认表空间和临时表空间,以便他们在该表空间中创建对象: ```sql CREATE USER my_user IDENTIFIED BY my_password DEFAULT TABLESPACE MY_DATA TEMPORARY TABLESPACE MY_TEMP; ...
现在,你可以通过调用`createTempTable`和`queryTempTable`方法来完成临时表的创建和查询。这个例子展示了如何在SpringBoot项目中整合Mybatis,创建并使用临时表进行数据操作。这种方式在处理一些临时性、会话级别的...
- **索引和约束**:临时表可以创建索引和约束,但这些对象仅在会话或事务内有效。 - **存储空间**:虽然临时表在会话结束或事务提交后会被清理,但它们仍会占用内存和磁盘空间,因此需要合理使用,以避免资源浪费。 ...
MySQL临时表是一种在会话范围内创建的特殊类型的表,它仅对当前会话可见,并在会话结束时自动删除。这种技术在处理复杂查询、中间数据处理或报表生成时非常有用,因为它允许用户将查询结果暂存起来,以便进一步处理...
临时表本质上是一种cache的表现形式,Oracle的临时表都是事先建好的,一旦用了临时表,存放的是和本会话相关的数据,没有人会傻乎乎地用临时表来保存本应该共享的数据。 with子查询实际上也是用了临时表,...
本文将详细介绍如何在Oracle中创建临时表,并探讨其应用场景以及两种主要类型的临时表:全局临时表(Global Temporary Table)与局部临时表(Local Temporary Table)的区别及其使用方法。 #### 二、Oracle临时表...
示例代码展示了如何创建、查询、删除临时表以及使用变量和存储过程来操作临时表。在示例中,声明了变量`@Wokno`和`@Str`,并用`WHILE`循环逐行处理数据。存储过程创建了一个局部临时表`#Tmp`,并在循环中利用动态SQL...
本文将详细介绍Oracle临时表的创建方法、使用场景以及优缺点,帮助读者更好地理解和运用这一特性。 #### 二、Oracle临时表概述 Oracle临时表是一种特殊的表,用于存储临时数据,通常用于事务处理或特定会话期间的...
资源名称:SQLServer中临时表与表变量的区别内容简介: 本文档主要讲述的是SQLServer中临时表与表变量的区别;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看。资源截图: 资源太大,传百度网盘了,...
2. **权限问题**: 需要确保有足够的权限来创建、使用和删除临时表。 3. **资源占用**: 使用大量临时表可能会导致`tempdb`数据库的资源紧张。 4. **清理机制**: 了解并正确使用临时表的自动清理机制,避免不必要的...
局部临时表和全局临时表的创建语法基本相同,区别仅在于标识符的前缀不同。以下是一些示例: ```sql -- 创建局部临时表 CREATE TABLE #tempTable ( ID INT PRIMARY KEY, Name VARCHAR(50) ); -- 创建全局临时表 ...
根据存储位置的不同,可以将临时表分为两类:内存临时表和外存临时表。 - **内存临时表(in-memory)**:这种类型的临时表存储在内存中,因此读写速度较快,但不适合存储大量数据或大数据块。 - **外存临时表(on-...
Oracle 临时表用法 Oracle 临时表是一种特殊的表结构,它可以在数据库中临时存储...但是,使用临时表时需要注意一些问题,例如避免在存储过程中创建临时表,避免在运行时创建临时表,以免导致数据库中的表数量增加。
Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表空间...
临时表与常规的永久表非常相似,主要区别在于其创建位置和生命周期。在SQL Server中,临时表是在`tempdb`数据库中创建的,这意味着它们仅在这个特定会话期间可用。 - **创建与生命周期**: - 本地临时表:以`#`...
在SQL Server中,临时表和表变量是两种用于暂存数据的结构,它们在数据库操作中扮演着重要的角色。理解它们的区别有助于优化存储过程和提高性能。 临时表类似于永久表,但它们存在于Tempdb系统数据库中,仅在创建它...
全局临时表在数据库会话(session)间是可见的,不同于局部临时表,后者只在其创建的会话内可见。当所有引用全局临时表的会话结束时,该表会被自动删除。因此,我们可以利用这一特性来记录用户的登录状态。 以下是...
临时表分为两种类型:局部临时表(以单个井号 # 开头)和全局临时表(以双井号 ## 开头)。它们主要区别在于可见性和生命周期。 1. 局部临时表(#表名): - 只在创建它的会话中可见,其他会话无法访问。 - 当...
7. **并发问题**:在多用户环境中,本地临时表确保了数据的私密性,而全局临时表则允许跨会话共享数据,但需要注意数据安全和并发控制。 8. **解析与引用**:如果同时存在同名的本地和全局临时表,查询可能无法明确...