存储查询输出动态TSQL

时间:2017-06-12 15:20:13

标签: sql tsql

我在不同的表上有一个循环,返回结果 列数不同。

是否可以在不创建具体表的情况下存储查询的输出?

我已经阅读了一些关于临时表的帖子,所以我尝试了这个简单的例子:

var myMap = new google.maps.Map(document.getElementById("myMap"), {
    center : { lat: 37.5, lng: -120 },
    zoom   : 6
})

google.maps.event.addListener(myMap, "click", function(e) {
    var latLng = e.latLng

    // do something with latLng
})

上面的table1可以是任何表

我收到以下错误消息:

列名或提供的值与表定义不匹配。

有没有办法避免让硬代码表定义与查询输出完全匹配?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以执行select into - 将自动创建临时表:

SELECT * INTO #Temp
FROM TableName

问题在于,由于您使用的是动态SQL,因此您的临时表只能在动态SQL范围内使用 - 因此执行此类操作会导致错误:

EXEC('SELECT * INTO #Temp FROM TableName')

SELECT * 
FROM #Temp -- The #Temp table does not exists in this scope!

要使用动态SQL执行此类操作,您必须使用全局临时表(必须在使用后删除!):

EXEC('SELECT * INTO ##GlobalTempFROM TableName')

SELECT * INTO #Temp
FROM ##GlobalTemp -- Since this is a global temporary table you can use it in this scope

DROP TABLE ##GlobalTemp