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 に答える
-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 に答える