0

我想在临时表中插入动态记录。我不想声明这个表。我希望在运行时定义它的列。我这样做是因为表“合同”的定义将来可能会改变。所以临时表(#x)应该相应地改变。这将在存储过程中。

我尝试了以下方法(被标记为答案,但没有一个有效)

    EXECUTE IMMEDIATE 
    'SELECT top 1 * FROM Contract'
      INTO #x
    select * from #x

    declare @arj varchar(100)
    set @arj= 'SELECT top 1 * FROM Contract'
    select * into #x from 
    (SELECT top 1 * FROM Contract)

    declare @arj varchar(100)
    set @arj= 'SELECT top 1 * FROM Contract'
    SELECT * into #x execute ('execute' + 
    --and this-- SELECT into #T1 execute ('execute ' + @SQLString ) @arj  )
    SELECT *from #x
4

4 回答 4

0
select *  
INTO #tempTable
from Contract  
WHERE 1=0 

我使用此查询来构建一个包含 Contract 表的所有字段和相同属性的表。希望能帮助到你。

于 2014-07-28T08:58:19.063 回答
0

您可以使用

SELECT top 1 * INTO #tempTable FROM Contract WHERE <any conditions you might want to filter the data>
于 2014-07-28T07:25:06.690 回答
0

这种语法应该有效。

declare @arj varchar(1000)
set @arj= 'SELECT top 1 * FROM Contract'
declare @charIdex int   
declare @arg2 varchar(1000)


SELECT @charIdex =  CHARINDEX ( 'FROM',
       @arj)
   SELECT @arg2 = STUFF(@arj, @charIdex, 0 , 'into tempTable ');
 exec   ( @arg2)
 select * from tempTable
于 2014-07-28T09:19:19.647 回答
-1

此语法应该可以工作,但您需要动态创建 sql 然后执行它:

 SELECT top 1  * 
 INTO #x
 FROM Contract

例子:

  SELECT TOP 0 * INTO #x from Contract 

  DECLARE @ARJ NVARCHAR(MAX)
  SET @ARJ='INSERT INTO #x SELECT TOP 1 * FROM Contract'
  EXECUTE sp_executesql @ARJ
于 2014-07-28T07:18:32.473 回答