T-SQL:如何使用exec插入到以前没有创建过的表中?

时间:2017-08-01 20:37:52

标签: sql-server tsql

我有以下代码:

Declare @strSQL varchar(max);
set @strSQL = N'REALLY LONG QUERY';
exec (@strSQL) at <LinkedServerName>;

我这样做是因为查询超过8000个字符(无法更改,只有太多列)。它可以工作,但我需要将它插入到一个尚不存在的时态表中。所以,我不想事先运行create table。那么,我应该在哪里写INTO tmp_table以获得正确的语法?

例如,这不起作用:

exec (@strSQL) INTO tmp_table at <LinkedServerName>;

1 个答案:

答案 0 :(得分:1)

Declare @strSQL varchar(max);
if object_id('tempdb..MyTempTable') is not null drop table tempdb.dbo.MyTempTable
set @strSQL = N'select * into tempdb.dbo.MyTempTable from (REALLY LONG QUERY) k';
exec (@strSQL) at <LinkedServerName>;
-- for check of existence of table for linkedserver add it into @strSQL

用临时表##Table替换 tempdb.dbo.MyTempTable (对于本地服务器)

分解并规范化你的模型,如果你有数千个字符,你不需要动态qry但重新考虑你的解决方案 - 例如使用视图或转动你的输出