3

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

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

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

另一种方式似乎是通过一个函数。我试过了,但无论我如何切片,我似乎都无法让函数接受存储过程。

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

GO

像上面这样的事情甚至可能吗?

4

2 回答 2

9

不,您不能在函数内执行。好吧,有一种解决方法(你提到过),但我不推荐它:

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

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

于 2013-11-14T19:16:20.433 回答
2

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

于 2013-11-14T20:00:36.933 回答