返回存储过程结果的功能

时间:2013-11-14 18:57:46

标签: sql-server tsql function

我有一个复杂的存储过程,我需要以某种方式在视图中检索其结果。最终用户请求在Excel电子表格中链接结果,我只能链接Excel中的视图和表格。

我知道你可以通过某种方式使用openquery来捏造你的方式,但似乎这不是一种理想的方式来解决这个问题,即使我测试了这个,我也得到了错误。

我总是可以将结果转储到偶尔刷新的表中,但用户非常希望按需提供这些数据。

另一种方式似乎是通过一个功能。我尝试了这个,但无论我如何切片,我似乎都无法接受存储过程的功能。

CREATE FUNCTION f_testFunction
(
    @Parameter INT
)
RETURNS TABLE
AS
RETURN
(
    EXEC sp_testProdedure @Parameter
)

GO

上述内容是否可能?

2 个答案:

答案 0 :(得分:8)

不,你不能在一个功能中执行EXEC。好吧,有一个解决方法(你提到它),但我不推荐它:

https://dba.stackexchange.com/a/12745/1186

所以你应该考虑将复杂的逻辑从一个过程转移到一个表值函数,然后你的视图和过程都可以引用它,你仍然只有一个版本需要维护,每个人都很高兴...

答案 1 :(得分:1)

通常你可以将存储过程重写为表值函数,然后它就是一个函数 - 解决了问题。