sqlserver 动态创建临时表的语句分享

因此计划先把数据转插入一个临时表,再对临时表的数据进行分析。
问题点是如何动态创建临时表。原先Insus.NET使用下面代码实现:


代码如下:

DECLARE @s NVARCHAR(MAX) = '
IF OBJECT_ID(''[dbo].[#Tb]'') IS NOT NULL
DROP TABLE [dbo].[#Tb]
CREATE TABLE [dbo].[#Tb]
(
[xxx] INT,
[xxx] NVARCHAR(50),
'+ [dbo].[Column]() + '
)'
EXECUTE(@s)

上面代码中,有一个函数[dbo].[Column]() 是取得一系列动态字段。
其实,上面的代码一点问题也没有,是能正确动态创建一个临时表,但是接下来代码,我们无法再使用这个临时表[dbo].[#Tb] ,因为run第10行代码EXECUTE(@s)这动作之后,进程已经结束了。这样说法,动态创建出来的临时表,也没有什么意义了。
为了解决这个问题,Insus.NET想到了一个方法,算是能解决这个问题。既能动态创建,又能在创建之后,能继续使用这个临时表。

代码如下:

IF OBJECT_ID('[dbo].[#Tb]') IS NOT NULL
DROP TABLE [dbo].[#Tb]
CREATE TABLE [dbo].[#Tb]
(
[xxx] INT,
[xxx] NVARCHAR(50)
)
DECLARE @tb NVARCHAR(MAX) = 'ALTER TABLE [dbo].[#Tb] ADD ' + [dbo].[Column]()
EXECUTE(@tb)

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

(0)

相关推荐

  • sqlserver通用的删除服务器上的所有相同后缀的临时表

    复制代码 代码如下: use tempdb if object_id('tempdb..#table') is not null drop table tempdb..#table select name into tempdb..#table from (select * from sysobjects where xtype='U') a where a.name like '%test_select' declare @table varchar(100),@count int selec

  • 关于sqlserver 2005 使用临时表的问题( Invalid object name #temptb)

    最近在利用 SSRS 2005 做报表的时候,调用带有临时表的数据源时,系统会报错,并无法进入向导的下一步,错误如下: There is an error in the query. Invalid object name '#temptb'. 经过研究后想到如下三种解决方案: 1. 使用表变量代替临时表,这样做法可以避免SSRS 2005 的语法错误提示,缺点就是如果处理的数据量比较大,会占用过大的内存,并且报表加载时间过长. 2.使用一个不包含临时表的SQL语句创建报表,创建成功以后,修改数

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

    在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在.临时表在创建的时候都会产生SQL Server的系统日志,虽它们在Tempdb中体现,是分配在内存中的,它们也支持物理的磁盘,但用户在指定的磁盘里看不到文件. 临时表分为本地

  • sqlserver2005利用临时表和@@RowCount提高分页查询存储过程性能示例分享

    最近发现现有框架的通用查询存储过程的性能慢,于是仔细研究了下代码: 复制代码 代码如下: Alter PROCEDURE [dbo].[AreaSelect]    @PageSize int=0,    @CurrentPage int=1,    @Identifier int=NULL,    @ParentId int=NULL,    @AreaLevel int=NULL,    @Children int=NULL,    @AreaName nvarchar(50)=NULL, 

  • SQLServer获取临时表所有列名或是否存在指定列名的方法

    获取临时表中所有列名 select name from tempdb.dbo.syscolumns where id=object_id( '#TempTB') 判断临时表中是否存在指定列名 if col_length('tempdb.dbo.#TempTB','columnName') is not null print '存在' else print '不存在' 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

  • sqlserver 临时表的用法

    用法: 用于复杂查询时可以用临时表来暂存相关记录,能够提高效率.提高程序的可读性,类似于游标中的 my_cursor declare my_cursor cursor scroll for select 字段 from tablename 临时表分为:用户临时表和系统临时表. 系统临时表和用户临时表的区别: 1)用户临时表:用户临时表的名称以#开头; 用户临时表的周期只存在于创建这个表的用户的Session,对其他进程是不可见. 当创建它的进程消失时此临时表自动删除. 2)系统临时表:系统临时表

  • sqlserver 临时表 Vs 表变量 详细介绍

    这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和表变量两者的一些特征,让我们对临时表和表变量有进一步的认识.在本章中,我们将从下面几个方面去进行描述,对其中的一些特征举例子说明: 约束(Constraint) 索引(Index) I/0开销 作用域(scope) 存儲位置 其他 例子描述 约束(Constraint) 在临时表和表变量,都可以创建Constraint.针对表变量,只有定义时能加Constraint. e.g.在Microsof

  • sqlserver 动态创建临时表的语句分享

    因此计划先把数据转插入一个临时表,再对临时表的数据进行分析. 问题点是如何动态创建临时表.原先Insus.NET使用下面代码实现: 复制代码 代码如下: DECLARE @s NVARCHAR(MAX) = ' IF OBJECT_ID(''[dbo].[#Tb]'') IS NOT NULL DROP TABLE [dbo].[#Tb] CREATE TABLE [dbo].[#Tb] ( [xxx] INT, [xxx] NVARCHAR(50), '+ [dbo].[Column]() +

  • javascript元素动态创建实现方法

    本文实例讲述了javascript元素动态创建实现方法.分享给大家供大家参考.具体分析如下: document.write只能在页面加载过程中才能动态创建 可以调用document的createElement方法来创建具有指定标签的DOM对象,然后通过调用元素的appendChild方法将 新创建元素添加到相应的元素下 举例如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-e

  • Java实现动态创建类操作示例

    本文实例讲述了Java实现动态创建类操作.分享给大家供大家参考,具体如下: Java可以创建动态类,学习看到,此处作为笔记. 代码如下: import java.io.IOException; import java.lang.reflect.Method; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.tools.Java

  • Python使用type动态创建类操作示例

    本文实例讲述了Python使用type动态创建类操作.分享给大家供大家参考,具体如下: 使用type动态创建类 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 下面看一个例子: # 定义一个Person类 class Person(object): def __init__(self): pass def say(self): print('say hello') p = Person() p.say() # 输出 say hello print(ty

  • springboot中实现通过后台创建临时表

    springboot 如何通过后台创建临时表 其实创建临时表,跟增删改查的原理是一样的,只不过是在xml中写一个创建临时表sql语句,xml中并不是只能写增删改查语句的 1,首先弄一个xml 在xml中写一个修改头标签,因为是建立的是临时表,所以表名要变,需要在表名处接收一个参数$(tableName) ,这时xml文件就写好了 2,在mapper中写出对应方法 这时需要在参数中加上注解@Param,只有加上这个注解,在xml中才可以接收到我传入的参数 3,接下来在service层和Contro

  • 一文教会你在sqlserver中创建表

    目录 前言 方法如下: 总结 前言 SQL Server创建表是最常见也是最常用的操作之一,下面就为您介绍SQL Server创建表的语句写法,供您参考,希望可以让您对SQL Server创建表方面有更深的认识. 方法如下: 1:在sql语句中,临时表有两类,分别是局部(local)和全局(global)临时表,局部临时表只在其会话(事务)中可见,全局临时表可以被会话(事务)中的任何程序或者模块访问 2:创建局部临时表 use db_sqlserver go create table #db_l

  • java使用JDBC动态创建数据表及SQL预处理的方法

    本文实例讲述了java使用JDBC动态创建数据表及SQL预处理的方法.分享给大家供大家参考,具体如下: 这两天由于公司的需求,客户需要自定义数据表的字段,导致每张表的字段都不是固定的而且很难有一个通用的模板去维护,所以就使用JDBC动态去创建数据表,然后通过表的字段动态添加数据,数据的来源主要是用户提供的Excel直接导入到数据库中. 如果考虑到字段的类型,可以通过反射的机制去获取,现在主要用户需求就是将数据导入到数据库提供查询功能,不能修改,所以就直接都使用String类型来处理数据更加便捷.

  • MFC中动态创建控件以及事件响应实现方法

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示. 静态控件不需要调用Create()

  • Python-Flask:动态创建表的示例详解

    今天小编从项目的实际出发,由于项目某一个表的数据达到好几十万条,此时数据的增删查改会很慢:为了增加提高访问的速度,我们引入动态创建表. 代码如下: from app_factory import app from sqlalchemy import Column, String, Integer class ProjectModel(app.db.model, app.db.Mixin): tablename = 'Project_' ID = Column(String(50), name='

  • 详解Angular 4.x 动态创建组件

    动态创建组件 这篇文章我们将介绍在 Angular 中如何动态创建组件. 定义 AlertComponent 组件 首先,我们需要定义一个组件. exe-alert.component.ts import { Component, Input } from '@angular/core'; @Component({ selector: "exe-alert", template: ` <h1>Alert {{type}}</h1> `, }) export cl

随机推荐