我有一个复杂的存储过程,我需要以某种方式在视图中检索其结果。最终用户请求在Excel电子表格中链接结果,我只能链接Excel中的视图和表格。
我知道你可以通过某种方式使用openquery
来捏造你的方式,但似乎这不是一种理想的方式来解决这个问题,即使我测试了这个,我也得到了错误。
我总是可以将结果转储到偶尔刷新的表中,但用户非常希望按需提供这些数据。
另一种方式似乎是通过一个功能。我尝试了这个,但无论我如何切片,我似乎都无法接受存储过程的功能。
CREATE FUNCTION f_testFunction
(
@Parameter INT
)
RETURNS TABLE
AS
RETURN
(
EXEC sp_testProdedure @Parameter
)
GO
上述内容是否可能?
答案 0 :(得分:8)
不,你不能在一个功能中执行EXEC。好吧,有一个解决方法(你提到它),但我不推荐它:
https://dba.stackexchange.com/a/12745/1186
所以你应该考虑将复杂的逻辑从一个过程转移到一个表值函数,然后你的视图和过程都可以引用它,你仍然只有一个版本需要维护,每个人都很高兴...
答案 1 :(得分:1)
通常你可以将存储过程重写为表值函数,然后它就是一个函数 - 解决了问题。