- 浏览: 79558 次
- 性别:
- 来自: 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 749上次写了MS SQL数据库备份和恢复存储过程详细情况见(htt ... -
求每组前2名,你有几种方法?(MS SQL2000)
2004-08-23 11:55 879create table abc( i nvarchar(10 ... -
ORDER BY排序后,表中字段相加的困惑?
2005-02-03 16:38 967在sql server2000自带DB-pubs 运行下面的s ... -
sql server中UNION 运算符随笔(几个需要注意的地方小总结)
2005-03-03 11:35 1050UNION 运算符是将两个或更多查询的结果组合为单个结果集 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TRY…CATCH
2007-12-03 13:56 715Transact-SQL 代码中的错误可使用 TRY…CATC ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
2007-12-03 14:57 735sql server2005新增加了2大数据类型: 1.大值数 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TOP 运算符
2007-12-03 16:49 713TOP 运算符介绍:TOP 运算符在Sql Serve ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
2008-07-31 14:52 858公用表表达式是Sql Server ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-APPLY 运算符
2008-08-13 15:07 792APPLY 运算符简介: APPLY 运算符是Sql Serv ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-窗口函数(OVER)
2008-08-26 07:53 9031.简介: SQL Server 2005中的窗口函数帮助你迅 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-DDL触发器
2008-09-02 07:48 8431.简介:Sql Server2005新增加了DDL触发器。与 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
2008-09-03 07:49 708Microsoft SQL Server 2005扩展了SQL ... -
sqlserver日期推算(年,季度,月,星期推算)
2008-11-19 19:20 2148DECLARE @dt datetimeSET @dt=GET ... -
sqlserver字符串拆分(split)方法汇总
2008-11-19 20:06 6828--方法0:动态SQL法declare @s varchar( ... -
sqlserver字符串合并(merge)方法汇总
2008-11-19 20:23 3568--方法1--使用游标法进行字符串合并处理的示例。--处理的数 ... -
sqlserver排序规则在拼音处理中的应用
2008-11-21 08:53 1046--1. 按拼音排序DECLARE @t TABLE(co ... -
sqlserver排序规则在全角与半角处理中的应用
2008-11-21 09:41 1177--1.查询区分全角与半角字符--测试数据DECLARE ...
相关推荐
oracle创建一个表空间创建临时表空间创建用户表空间资源的权限
SpringBoot 整合Mybatis 创建临时表
SQL Server中关于临时表概念及创建和插入数据等问题 本地临时表 全局临时表 在程序中向临时表插入数据时报错……
临时表本质上是一种cache的表现形式,Oracle的临时表都是事先建好的,一旦用了临时表,存放的是和本会话相关的数据,没有人会傻乎乎地用临时表来保存本应该共享的数据。 with子查询实际上也是用了临时表,...
资源名称:SQLServer中临时表与表变量的区别内容简介: 本文档主要讲述的是SQLServer中临时表与表变量的区别;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看。资源截图: 资源太大,传百度网盘了,...
1、局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除。 2、全局临时表(##开头)对...临时表有两种,局部的和全局的.和普通表的表面上的区别就是 分别以#和##开头.她们是保存在磁盘上的tempdb数据库里的
oracle11gR2创建临时表空间组. 使用临时表空间组而非普通的临时表空间,有如下好处: 由于SQL查询可以并发使用几个临时表空间进行排序操作,因此SQL查询很少会出现排序空间超出,避免当临时表空间不足时所引起的磁盘...
很好的,经典.创建Oracle 临时表,可以有两种类型的临时表:会话级的临时表,事务级的临时表 。
Oracle存储过程中使用临时表 会话级临时表 事务级临时表
在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与...
Linux设置环境变量小结设置永久变量&临时变量 全局变量&局部变量
创建临时表用于查询 sql server
此文档中详细的记载了,sql server触发器中自动生成的临时表,希望可以帮到有需要的朋友们!
Oracle 临时表功能介绍: Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时。每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的。
大家帮忙看看这个品牌维护的表单,在VFP中测试可以,一但连编就显示“不能更新临时表”。无论操作添加还是PAGE2的修改,我不知道是怎么回事,高手帮看看,谢谢!!!!表单和所用的表已上传
oracle创建临时表空间文档及一键导入、导出工具,非常方便
一、表变量 表变量在SQL Server 2000中首次被引入。表变量的具体定义包括列定义,列名,数据类型和约束。而在表变量中可以使用的约束...2.表变量较临时表产生更少的存储过程重编译。 3.针对表变量的事务仅仅在更新
目前所有使用Oracle作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都是在百万级以上的数据量。 当然在Oracle中创建分区是一种不错的选择
通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表。这种临时表只对当前用户可见,当前会话结束的时候,该临时表会自动关闭。这种临时表的命名与非临时表可以同名(同名后非临时表将对当前会话...