TSQL—如何将变量的内容输出到表中?

  • 本文关键字:输出 变量 TSQL tsql variables
  • 更新时间 :
  • 英文 :


如标题所述,我希望将变量的输出存储到"非变量表"中。下面是代码:

declare @fullpath NVARCHAR(200) = '''Data Source=pathtofolder'
declare @filename NVARCHAR(50) = 'Country.xlsx'
declare @properties NVARCHAR(50) = ';Extended Properties=Excel 12.0'')'
declare @sheetname NVARCHAR(50) = '...[Country$]'
declare @extraction NVARCHAR(500) =
'SELECT * FROM OPENDATASOURCE(''Microsoft.ACE.OLEDB.12.0'','+ @fullpath+
@filename+
@properties+
@sheetname
EXEC(@extraction)

这将以表格格式输出excel文件的内容(country_id和country_name)。现在,如何将这个输出表存储到另一个表中呢?例如:

SELECT * INTO #temp FROM @extraction

问候,

就像平常一样使用INSERT INTOINSERT INTO允许后跟EXEC语句:

CREATE TABLE #Temp ({Column List});
INSERT INTO #Temp ({Column List})
EXEC sys.sp_executsql @extraction;

似乎OP不知道文件的定义。事实上,这是一个问题,但你可以"绕过"它。它。因此,我将在动态语句中使用SELECT ... INTO。为此,您需要使用全局临时表或用户表。我在这个例子中使用了一个全局临时表:

DECLARE @extraction nvarchar(MAX) =
N'SELECT * INTO ##TEMP FROM OPENDATASOURCE(''Microsoft.ACE.OLEDB.12.0'',' + @fullpath + @filename + @properties + @sheetname;
EXEC sys.sp_executesql @SQL;
SELECT *
FROM ##TEMP;
--DROP TABLE ##TEMP;

最新更新