De este hilo de foros de MSDN aprendo que
[la] OPTION
la cláusula solo se puede usar en el nivel de declaración
Por lo tanto, no puede usarlo dentro de una expresión de consulta dentro de definiciones de vista o TVF en línea, etc. La única forma de usarlo en su caso es crear el TVF sin la OPTION
y especifíquelo en la consulta que utiliza el TVF. Tenemos un error que rastrea la solicitud para permitir el uso de OPTION
cláusula dentro de cualquier expresión de consulta (por ejemplo, if exists()
o CTE o ver).
y más
No puede cambiar el valor predeterminado de esa opción dentro de un udf. Tendrás que hacerlo en la declaración que hace referencia a la udf.
Entonces, en su ejemplo, debe especificar la OPTION
cuando llamas tu función:
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 -- no OPTION here
)
(más tarde)
SELECT * FROM [liste_jour] ( @from , @to ) OPTION ( MAXRECURSION 365 )
Tenga en cuenta que no puede evitar esto teniendo un segundo TVF que solo haga la línea anterior; obtendrá el mismo error, si lo intenta. "[la] OPTION
La cláusula solo se puede usar en el nivel de declaración", y eso es definitivo (por ahora).