从另一个存储过程的SELECT语句中执行存储过程?

时间:2016-06-15 18:23:41

标签: sql sql-server stored-procedures

我想从存储过程Y的SELECT语句中执行存储过程X,以便X的值可以作为Y数据的一部分返回。

我正在尝试以下语法,但它显然无效。

SELECT name, type, (EXEC X @type=type)
FROM table

我希望你能看到上面的内容,我需要将当前行的类型值传递给过程X以获得正确的返回值。

免责声明:我可能只是不知道自己在做什么。

2 个答案:

答案 0 :(得分:5)

您尝试过的方法无效。而不是存储过程的X将其转换为user-defined function。如下所示

Create function dbo.fnGetTypeDetail
(
 @type varchar(50)
)
returns varchar(100)
As
Begin 
   return --do your operation;
End

并将您的查询替换为:

SELECT name, type, dbo.fnGetTypeDetail(type) AS TypeDetail
FROM table

对于示例,我创建了一个标量函数。根据您的要求,您可以根据example

创建内联表值函数

答案 1 :(得分:0)

您无法在SELECT语句中执行存储过程。

您可以做的是将存储过程INSERT..EXEC INSERT到临时表中,然后运行查询该临时表的SELECT语句,同时根据需要连接到其他表。

伪示例:

INSERT INTO #Tmp (Column1) EXEC X;

SELECT Name, Type, (SELECT Column1 FROM #tmp)
FROM MyTable