qJa*_*ake 3 sql sql-server stored-procedures common-table-expression
我想在一个SELECT语句的列定义中执行内联存储过程,类似于:
SELECT n.Name,
n.Key,
(EXEC sp_GetNickname @nameKey = n.NameKey) AS Nickname
FROM Names n
Run Code Online (Sandbox Code Playgroud)
我无权修改存储过程(它来自第三方系统),但我知道它总是只选择一行和一列(它是标量结果).
我需要能够内联调用它,因为这个select语句在递归CTE中,如下所示:
WITH Nicknames (Name, Key)
AS
(
SELECT ... -- Base
UNION ALL
SELECT ... -- Recursive
)
Run Code Online (Sandbox Code Playgroud)
如果存储过程更有用,它还有一个"OUT"版本的存储过程,它将按如下方式执行:
EXEC sp_GetNicknameOut @nameKey = n.NameKey,
@outNickname = @theNickname OUTPUT
Run Code Online (Sandbox Code Playgroud)
我无法向数据库添加任何存储过程或函数,因为此查询是在动态执行C#应用程序.
我怎样才能做到这一点?