【问题标题】:Save result of stored procedure in a Table variable [duplicate]将存储过程的结果保存在表变量中[重复]
【发布时间】:2011-06-03 11:44:18
【问题描述】:

可能重复:
How to SELECT * INTO [temp table] FROM [stored procedure]

我有一个嵌套的存储过程调用

在其中一个存储过程中,我想将结果保存到一个表变量中:

INSERT INTO @myTable 
EXEC sp_myStoredProcedure

但是,因为 proc.嵌套出现以下错误: INSERT EXEC 语句不能嵌套

必须从另一个过程调用该过程,不能更改此选项。 我想尝试使用输出参数,但仍然必须使用 Insert into 语句进行设置。

还有哪些其他选项可以将从存储过程调用中检索到的数据保存到变量中?

【问题讨论】:

  • 如果使用opendatasource调用存储过程会怎样?通常以打开另一个与 SQL Server 的连接为代价来绕过许多此类限制。
  • 请做一件事,使用 EXECUTE sp_executesql 调用 sp 并设置一个输出参数。参考链接:support.microsoft.com/en-in/kb/262499

标签: sql sql-server sql-server-2008 stored-procedures exec


【解决方案1】:

在嵌套过程的情况下,表变量对调用过程不可见。以下对#temp 表是合法的。

http://databases.aspfaq.com/database/should-i-use-a-temp-table-or-a-table-variable.html

http://support.microsoft.com/kb/305977/en-us

【讨论】:

    【解决方案2】:

    未测试,但可能会这样做:

    DECLARE @insertedProc as varchar(300)
    SET @insertedProc = 'INSERT INTO ' + @myTable + ' sp_myStoredProcedure'
    
    EXEC @insertedProc
    

    确保您事先已定义 @myTable 是什么。

    【讨论】:

    • 这行不通,Jan 说“我想将结果保存到 table variable ”而不是在变量中指定的 table。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多