仅通过Select语句在Temporary表中动态插入数据



我想在临时表中插入动态记录。我不想申报这张桌子。我希望在运行时定义它的列。我这么做是因为"合同"表的定义将来可能会改变。因此,临时表(#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

您可以使用

SELECT top 1 * INTO #tempTable FROM Contract WHERE <any conditions you might want to filter the data>
select *  
INTO #tempTable
from Contract  
WHERE 1=0 

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

这个语法应该可以工作。

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

此语法应该有效,但您需要动态创建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

相关内容

  • 没有找到相关文章

最新更新