博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MS SQL动态创建临时表
阅读量:6814 次
发布时间:2019-06-26

本文共 957 字,大约阅读时间需要 3 分钟。

开发业务需求,需要对一个表作数据分析,由于数据量较大,而且分析时字段会随条件相应变化而变化。

因此计划先把数据转插入一个临时表,再对临时表的数据进行分析。

问题点是如何动态创建临时表。原先Insus.NET使用下面代码实现:

ExpandedBlockStart.gif
View Code
 1 
DECLARE 
@s 
NVARCHAR(
MAX
= 
'
 2 
IF OBJECT_ID(
''
[dbo].[#Tb]
''
) IS NOT NULL
 3 
    DROP TABLE [dbo].[#Tb]    
 4 
CREATE TABLE  [dbo].[#Tb] 
 5 
 (   
 6 
    [xxx] INT,
 7 
    [xxx] NVARCHAR(50),
 8 
    
'
+ 
[
dbo
].
[
Column
]() 
+ 
'
 
 9 
 )
'  
10  
EXECUTE(
@s

 

上面代码中,有一个函数[dbo].[Column]()  是取得一系列动态字段。

其实,上面的代码一点问题也没有,是能正确动态创建一个临时表,但是接下来代码,我们无法再使用这个临时表[dbo].[#Tb] ,因为run第10行代码EXECUTE(@s)这动作之后,进程已经结束了。这样说法,动态创建出来的临时表,也没有什么意义了。

为了解决这个问题,Insus.NET想到了一个方法,算是能解决这个问题。既能动态创建,又能在创建之后,能继续使用这个临时表。 

ExpandedBlockStart.gif
View Code
 1 
IF 
OBJECT_ID(
'
[dbo].[#Tb]
'
IS 
NOT 
NULL
 2     
DROP 
TABLE 
[
dbo
].
[
#Tb
]    
 3 
CREATE 
TABLE  
[
dbo
].
[
#Tb
] 
 4  (   
 5     
[
xxx
] 
INT,
 6     
[
xxx
] 
NVARCHAR(
50)
 7   ) 
 8    
 9 
DECLARE 
@tb 
NVARCHAR(
MAX
= 
'
ALTER TABLE [dbo].[#Tb] ADD 
' 
+ 
[
dbo
].
[
Column
]()  
10 
EXECUTE(
@tb)

 

只要细心看了一下,就是可以知道,可以先按正常创建这个临时表,再动态修改这个临时表的字段。这样做之后,程序run完第10行代码之后,就能再继续使用这个临时表,如:

SELECT 
* 
FROM 
[
dbo
].
[
#Tb
]

 

 

转载地址:http://jtmwl.baihongyu.com/

你可能感兴趣的文章
python模块paramiko与ssh
查看>>
我的友情链接
查看>>
OEL修改字符集失败 -bash: /root: is a directory
查看>>
3 docker容器
查看>>
我的友情链接
查看>>
Slowquery图形化显示MySQL慢日志工具
查看>>
如何对系统日志中事件 ID 9、事件 ID 11 和事件 ID 15 错误消息进行故障排除
查看>>
spring jpa配置
查看>>
再次回来!!!
查看>>
判断当前进程是否以管理员权限启动的
查看>>
Javascript交互式金融股票基金图表JavaScript Stock Chart
查看>>
bootstrap-徽章-链接
查看>>
SQL-26 (二次分组)汇总各个部门当前员工的title类型的分配数目,结果给出部门编号dept_no、dept_name、其当前员工所有的title以及该类型title对应的数目count...
查看>>
SQL-55 分页查询employees表,每5行一页,返回第2页的数据
查看>>
DB2 心态
查看>>
Android实现仿IOS带清空功能的文本输入框
查看>>
轻松玩转windows7之一:利用无线玩转虚拟网络
查看>>
:layout_gravity gravity
查看>>
POJ 2478:Farey Sequence
查看>>
linux 心得
查看>>