2010-04-01 108 views
1

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

但我只需要3出250

我想打电话给SP,把只有3点中的值在临时表的。 我不想用250列定义临时表!

这是我想做到这一点,但是这并不能当然的工作:

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

可不可以这样做无论如何?

再见尔根

+0

您可以将商店程序更改为函数吗? – Avitus 2010-04-01 14:21:34

回答

1

一种方式将是对原始存储过程切换到用户定义函数结果的表。然后,你可以这样做(例如):

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

关于这个“不舒服”的事情,在这里你只需要3列将始终有返回所有250列的开销/命中的情况。

这可能值得单独使用sproc,因为这可能意味着3列方案可能会导致更为优化的执行计划。

0

这是不重复使用代码的时间。你只需要三列,然后编写一个可以做到这一点的过程。即使您只能将三列放入临时表中,您仍然在浪费资源来生成它们。