将过程结果集插入动态临时表

时间:2018-01-08 07:47:39

标签: sql sql-server azure-sql-database

如何将存储过程中的结果集插入到 OPENROWSET &以外的动态临时表中 OPENQUERY 哪些必须能够在系统场所和azure SQL Server数据库中工作?

1 个答案:

答案 0 :(得分:1)

在某些情况下,有一种方法可以做到这一点,但它可能不值得努力。

步骤如下:

  1. 使用sp_describe_first_result_set
  2. 收集SP结果集的元数据
  3. 构建自定义查询,创建临时表并执行存储过程
  4. 使用sp_execute_sql
  5. 执行动态查询

    你必须'手动'构建临时表,没有SELECT .. INTO .. FROM构造使用EXEC,当你想将SP的结果插入表中时,目标表必须存在,因此,您必须知道结果集的结构。

    有一个问题:sp_describe_first_result_set有一些限制,例如,如果SP在内部使用临时表,则无法检索第一个结果集的元数据。解决方法是使用WITH RESULT SETS子句(SQL Server 2012及更高版本)执行SP。但是,如果这样做,您已经知道了结构,因此您也可以创建临时表。