选择存储过程的返回值

时间:2010-04-01 14:14:13

标签: sql stored-procedures return-value

我有一个存储过程,返回250的结果!列。

但我只需要250个中的3个。

我想调用SP并仅将3列值放在临时表中。 我不想定义250列的临时表!

这就是我想要的方式,但这当然不起作用:

create #myTempTable (id int, value1 int, value2 int)
insert into #myTempTable 
  exec myBigFatStoredProc

无论如何都可以吗?

Bye Juergen

3 个答案:

答案 0 :(得分:1)

一种方法是将原始存储过程切换到导致TABLE的用户定义函数。然后你可以做(​​例如):

SELECT id, value1, value2
FROM dbo.fxnMyFunctionThatReturns250Columns('SomeParameter') x

关于这一点的“令人不舒服”的事情是,您只希望3列始终具有返回所有250列的开销/命中。

这可能值得单独使用,因为它可能意味着3列方案可以产生更优化的执行计划。

答案 1 :(得分:0)

你可以使用这个出色的答案:Insert results of a stored procedure into a temporary table

简而言之,它使用OPENROWSET将存储过程执行到即时创建的#temp表中,而无需命名和键入所有列。

答案 2 :(得分:0)

这是不重用代码的时候。您只需要三列然后编写一个执行该操作的proc。即使您只能将所需的三列放入临时表中,您仍然在浪费生成它们的资源。