情况:
这是我的新手,但只是想出了如何创建表值函数和存储过程。我为客户创建了一些。创建带有参数date的表值函数时遇到问题。在查询本身内,有一些CTE。执行该函数时,查询将永远加载,最终我必须停止它(请参见下面的示例)。
因此,我将CTE分为2个主要的temp
表和一个加载临时表的查询。以某种方式,它的执行方式更好(请参见下面的示例)。
目标:
我有哪些选项,用户不必手动运行临时表。用户也应该像存储过程或函数那样容易地执行查询。
示例:
我有一个看起来像一个小时后仍在运行的东西。
CREATE FUNCTION dbo.example
(@StartDate AS DATE)
RETURNS TABLE
AS
RETURN
WITH CTE AS
(........),
CTE2 AS (.....)
SELECT *
FROM CTE2 ...
JOINS...
因此,我创建了性能很好的临时表:
DECLARE @StartDate AS DATE = ....
SELECT * INTO #cte FROM (query) temp1
DECLARE @StartDate AS DATE = ....
SELECT * INTO #cte2 FROM (query) temp1
SELECT *
FROM #cte2....
JOIN ....
我有什么选择?
谢谢!