Från den här MSDN-forumtråden lär jag mig det
[den]
OPTION
sats kan endast användas på satsnivåSå du kan inte använda det i ett frågeuttryck inuti vy-definitioner eller inline TVFs etc. Det enda sättet att använda det i ditt fall är att skapa TVF utan
OPTION
och ange den i frågan som använder TVF. Vi har en bugg som spårar begäran om att tillåta användning avOPTION
sats i valfritt frågeuttryck (till exempelif exists()
eller CTE eller visa).
och vidare
Du kan inte ändra standardvärdet för det alternativet i en udf. Du måste göra det i uttalandet som hänvisar till udf.
Så i ditt exempel måste du ange OPTION
när du ringer din funktion:
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
)
(senare)
SELECT * FROM [liste_jour] ( @from , @to ) OPTION ( MAXRECURSION 365 )
Observera att du inte kan kringgå detta genom att ha en andra TVF som bara gör raden ovan - du får samma fel, om du försöker. "[den] OPTION
sats kan endast användas på satsnivå", och det är slutgiltigt (för nu).