【问题标题】:Insert results of stored procedure with multiple parameters into a temp table将具有多个参数的存储过程的结果插入临时表
【发布时间】:2015-10-19 20:10:10
【问题描述】:

我创建了一个需要用户指定多个参数的存储过程。以下脚本返回正确的结果:

Execute dbo.Stored_Procedure_Name 
            @Ord1 = 1, @Ord2 = 4, @Ord3 = 5, @Ord4 = 6, @Ord5 = 7,
            @Table_Name = 'Random_Table_Name'

现在我需要做的就是将结果放入临时表中,因为结果集是设置为从临时表运行的更大查询的基础。我在网上找到了很多关于如何执行此操作的示例(包括OPENROWSET),但无法找到利用需要多个参数的存储过程的东西。其他示例假设用户知道列标题并且可以在运行脚本之前创建一个表,而我不知道。

如果您能提供任何指导,我们将不胜感激!

谢谢!

【问题讨论】:

  • 当你说你必须把结果放到一个临时表中,你的意思是你需要把它按照第6个参数的名字放到一个表中吗?你能澄清一下吗?
  • 顺便提一下,Erland Sommarskog 在本文中很好地涵盖了这个问题空间。也许这些解决方案之一就是您正在寻找的。 sommarskog.se/share_data.html
  • 任何答案对您有帮助吗?
  • 您使用的是哪个版本的 Sql Server?

标签: sql-server stored-procedures


【解决方案1】:

没有真正的好方法可以将存储过程调用的结果放入临时表中。我会将您的存储过程转换为表值函数并返回结果集(但如果您事先不知道要返回的表的结构,这将不起作用),或者只是让您的存储过程创建临时表本身并让您的查询仅引用由存储过程创建的临时表。比如:

IF OBJECT_ID('tempdb..#Your_Temp_Table') IS NOT NULL
   DROP TABLE #Your_Temp_Table

-- call your SP that will make the temp table #Your_Temp_Table
exec dbo.your_sp

-- use the temp table in the rest of your query
select * from #Your_Temp_Table

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2020-01-26
    • 2021-01-10
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2020-12-05
    • 2011-09-17
    相关资源
    最近更新 更多