我在SQL中使用动态查询,它返回一个我需要插入临时表的大型数据集。
是否 SELECT INTO #tmp from EXEC sp_executesql @query work?
我确实尝试了但是我收到错误'关键字' EXEC'附近的语法不正确
我知道它可以使用Insert into,但我不想手动创建表,因为它是一个包含大量列的大表。有没有必要手动创建临时表?
答案 0 :(得分:0)
不,它不起作用你不能这样做。但是,在动态SQL创建一个像普通的临时表之前,并在动态SQL中插入到该表之前,解决这个问题。然后,当你完成后,你将填满表。
答案 1 :(得分:0)
IF OBJECT_ID('tempdb..##TmepTable') IS NOT NULL DROP TABLE ##TmepTable
CREATE TABLE ##TmepTable (TmpCol CHAR(1))
DECLARE @SQL NVARCHAR(max) =' IF OBJECT_ID(''tempdb..##TmepTable'') IS NOT NULL DROP TABLE ##TmepTable
SELECT * INTO ##TmepTable from [MyTableName]'
EXEC sp_executesql @SQL
SELECT Alias.* FROM ##TmepTable as Alias
IF OBJECT_ID('tempdb..##TmepTable') IS NOT NULL DROP TABLE ##TmepTable