我想从存储过程Y的SELECT语句中执行存储过程X,以便X的值可以作为Y数据的一部分返回。
我正在尝试以下语法,但它显然无效。
SELECT name, type, (EXEC X @type=type)
FROM table
我希望你能看到上面的内容,我需要将当前行的类型值传递给过程X以获得正确的返回值。
免责声明:我可能只是不知道自己在做什么。
答案 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