jestem w obliczu problemu zadeklarować opcję maxrecursion dla CTE wewnątrz TVFJak ustawić opcję maxrecursion dla CTE wewnątrz wycenione tabela funkcja
oto CTE (prosty kalendarz):
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)
i 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)
)
wyżej TVF pracuje ok bez opcji maxrecursion ale tam jest błąd składni w opcji. jakie jest rozwiązanie?
pozdrowienia
Ta odpowiedź może być trochę lepiej, ponieważ nie ma potrzeby, aby pamiętać o CTE (bez limitu rekurencji) w funkcji. –
Oczywiście rozwiązuje problem, ale ma "prawdopodobnie wadę", ponieważ ta funkcja z wartościami przechowywanymi w tabeli jest "niewypowiedziana". Może być krwisty pod względem wydajności. – pkuderov
Jak powiedziałem: "Prawdopodobnie istnieją problemy z wydajnością, ale mogę sobie na to pozwolić w moim przypadku". – Crisfole