【问题标题】:SQL Server, passing stored procedure results by using temp tableSQL Server,使用临时表传递存储过程结果
【发布时间】:2017-10-02 22:04:35
【问题描述】:

我正在编写一个存储过程,它通过使用临时表来使用另一个存储过程的结果。内部存储过程usp_i 在数据库A 中,外部存储过程usp_o 在数据库B 中。所有数据库都在同一台服务器上。

usp_i的末尾,我把它的结果放到#tmpResult表中:

use A
go

select * into #tmpResult from SomeTable

现在在来电者usp_o,我有

use B
go

exec A.dbo.usp_i
select * from #tmpResult
select * from tmpdb..#tmpResult

两种方法都出错了

无效的对象名称#tmpResult

如何获取临时表?

【问题讨论】:

  • 您是否尝试访问外部存储过程中的内部存储过程返回的结果?还是你想在外部过程中使用在内部过程中创建的临时表?
  • @Murthy 最终我想使用内部过程返回的结果。我认为最简单的是insert into ... exec,但是 sql server 有一些嵌套问题

标签: sql-server stored-procedures


【解决方案1】:

在usp_o中预先创建临时表,在usp_i中插入行就可以在usp_o中访问了

-- in usp_o
create table #tmpResult ( ... )

exec A.dbo.usp_i



-- in usp_i
insert into #tmpResult (  ... ) select ... from sometable

【讨论】:

    【解决方案2】:

    在你的外部过程中创建临时表,并在你的内部过程中INSERT INTO它。

    【讨论】:

      【解决方案3】:

      我认为你可以使用表##:

      select * into ##tmpResult from SomeTable
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-20
        • 1970-01-01
        • 2015-10-30
        • 2014-11-21
        • 2010-12-21
        • 1970-01-01
        • 2010-10-14
        • 2020-01-26
        相关资源
        最近更新 更多