estoy frente a un problema de declarar la opción MAXRECURSION para un CTE dentro de un TVF¿Cómo configurar la opción MAXRECURSION para un CTE dentro de una tabla con valores de funciones
aquí es el CTE (un simple calendario):
DECLARE @DEBUT DATE = '1/1/11', @FIN DATE = '1/10/11';
WITH CTE as(
SELECT @debut as jour
UNION ALL
SELECT DATEADD(day, 1, jour)
FROM CTE
WHERE DATEADD(day, 1, jour) <= @fin)
SELECT jour FROM CTE option (maxrecursion 365)
y el TVF:
CREATE FUNCTION [liste_jour]
(@debut date,@fin date)
RETURNS TABLE
AS
RETURN
(
WITH CTE as(
SELECT @debut as jour
UNION ALL
SELECT DATEADD(day, 1, jour)
FROM CTE
WHERE DATEADD(day, 1, jour) <= @fin)
SELECT jour FROM CTE
--option (maxrecursion 365)
)
lo anterior TVF está funcionando bien sin la opción MAXRECURSION pero hay un error de sintaxis con la opción. ¿cuál es la solución?
respecto
Esta respuesta puede ser un poco mejor, porque no hay necesidad de recordar acerca de CTE (sin límite de recursividad) en una función. –
Por supuesto, resuelve el problema, pero tiene "posiblemente un inconveniente", porque esta función con valores de tabla es 'no en línea '. Puede ser crusial en términos de rendimiento. – pkuderov
Como dije, "Probablemente haya problemas de eficiencia con esto, pero puedo pagarlo en mi caso". – Crisfole