【问题标题】:Is there an automated way to create a temp table in SQL Server是否有在 SQL Server 中创建临时表的自动化方法
【发布时间】:2015-03-18 14:27:52
【问题描述】:

我在存储过程中有一个相当复杂的SELECT 语句,我正在更新该语句以将选择中的行插入到临时表中。要定义临时表,我需要知道每个选定项目的数据类型。

是否有一种简单的方法(可能是脚本)可以用来确定数据类型和临时表结构,而不是去选择中的每个表的定义来找出它是什么?

PS:我不能使用公用表表达式,因为我需要在 proc 中多次使用这个临时表

【问题讨论】:

  • 有什么原因你不能只使用SELECT INTO
  • 我的问题是关于如何定义#temp
  • @DotnetDude:这就是重点。当你SELECT INTO时,你不需要预定义你的表和它的列。
  • SELECT INTO 会根据源表定义。
  • 不带变量,不。 AFAIK 需要明确定义它们。

标签: sql sql-server


【解决方案1】:
SELECT
  blah
INTO
  #temp
FROM
  wibble

blahwibble 不是秘密语法。请用您自己的 SQL 替换这些 :)

【讨论】:

  • 我的问题是关于声明#temp 表的简单方法。当我声明它时,我需要选择返回的数据类型。对于从多个表中选择的相当复杂的SELECT,我需要打开每个表定义以找出数据类型是什么。
  • @DotnetDude - 这会创建表,而不是之前声明/创建的表。正如你所要求的:) not INSERT INTO #temp SELECT blah FROM wibble 要求该表已经存在。
  • 我可以使用DECLARE @tmpTable TABLE 声明的表变量执行SELECT INTO 吗?
  • @DotnetDude - 不幸的是,不是。它仅适用于真实表或临时表。 :msdn.microsoft.com/en-us/library/ms188029.aspx
  • @aF。 - 我认为,仅当 DynamicSQL 读取查询的源表的表定义时。我想不出一种简单的方法。
【解决方案2】:

SELECT * INTO #temp FROM TABLE1

TABLE 1 中的所有列现在都进入您的临时表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 2018-09-23
    • 2010-09-05
    • 1970-01-01
    相关资源
    最近更新 更多