테이블의 소중한 기능과 재귀 CTE

0

질문

그냥 재미를 위해 노력하고 테이블을 작성 평가 함수의 테이블을 생성합니다. 테스트를 위해,나를 코드 값을 전달되어야에서는 변수입니다.

자체 작동:

WITH cte AS (
    SELECT cast('2021-10-01' AS date) AS date
    UNION ALL
    SELECT dateadd(day,1,date) FROM cte WHERE date<current_timestamp
)
SELECT * FROM cte OPTION(maxrecursion 0);

참고 OPTION 니다.

기능으로,그것은 작동하지 않습니다면 제거 OPTION 절에서 끝:

CREATE FUNCTION dates(@start date, @rows INT) RETURNS TABLE AS
RETURN
WITH cte AS (
    SELECT cast('2021-10-01' AS date) AS date
    UNION ALL
    SELECT dateadd(day,1,date) FROM cte WHERE date<current_timestamp
)
SELECT * FROM cte   --  OPTION(maxrecursion 0)
;

에 대한 테스트 데이터를,그것은 좋지만,그것은 확실히 실패한다면 나는 그것을 주일에서 올해의 시작 이후,그것 보다는 더 많은 것을 포함한다 100recursions.

이 구문을 정확하게 이를 위해,또는 다른 Microsoft 특질을 필요로 하는 방법?

1

최고의 응답

0

내가 생각하는 이 대답을 수 있습니다.

에서 다른 질문에 대한 답변,@GarethD 국:

당신이 생각하는 경우의 보기로 더 많이 저장된 하위 이상 저장 쿼리고 기억하는 그 정의에 확장 밖으로 주요 query...

(잘못된 구문 근처에는 키워드'옵션을 선택에'CTE 문).

이 경우,뷰 포함할 수 없습니다 아무것도 포함할 수 없는 하위 쿼리에. 을 포함하는 ORDER BY 절과 같은 힌트 OPTION.

나는 아직 확인하십시오,하지만 나는 추측 할 수 있는 동 테이블에 대한 소중한 기능입니다. 그렇다면,응답은 없는 방법이 포함됩 OPTION 절입니다.

참고로 다른 Dbms 더 많은 수에서 무엇을 할 수 있습니에 포함된 하위,그래서 내가 상상하지 않는 그들이 동일한 제한이 있습니다.

2021-11-28 09:29:14

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................