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

Slo*_*r74 1 sql sql-server stored-procedures

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

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

SELECT name, type, (EXEC X @type=type)
FROM table
Run Code Online (Sandbox Code Playgroud)

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

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

Aru*_*mar 5

您尝试过的方法无效.而不是X像存储过程那样将其转换为用户定义的函数.如下所示

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

并将您的查询替换为:

SELECT name, type, dbo.fnGetTypeDetail(type) AS TypeDetail
FROM table
Run Code Online (Sandbox Code Playgroud)

对于示例,我创建了一个标量函数.根据您的要求,您可以根据示例创建内联表值函数

  • 我同意这个工作,但标量函数是效率极其低下.当用作列值时,它们非常糟糕. (2认同)