从存储过程中选择输出表的值

时间:2015-07-08 12:07:33

标签: select stored-procedures sql-server-2014

我有一个过程,它在一组计算后返回一个select语句输出。执行程序的输出如下:

exec proc1 empID

输出如下

col1 col2 col3 col4 col5
2014 2 33 330 29
2014 3 10 34 12
2015 1 25 60 55

现在我有一个主select语句,它通过连接不同的表来获得许多列。

我需要检索上面的列(存储过程proc1的输出)到主select语句,对于可用的empID

如下所示:

select empID, empName, empSal, (select col3 from [exec proc1 empID] where col2=1), empDept from tblemployee

有可能吗?我期待上面查询的第4列中的25个。

1 个答案:

答案 0 :(得分:1)

您可以使用User-defined functionview代替存储过程。

sp不允许select使用它。

或者你可以

  • 创建一个表变量来存储从存储过程返回的结果

Declare @TempTable Table (...)--declare all columns

  • 将存储过程的输出插入表变量,然后

Insert @TempTable Exec storedProcname params

  • 根据需要完全加入Temp表变量

注意

但上述方法有局限性 INSERT @Temptable的问题是

  

INSERT EXEC语句不能嵌套

。如果您的存储过程中已经有一个INSERT EXEC,它将会中断。