मैं एक समस्या एक TVF अंदर एक CTE के लिए maxrecursion विकल्प घोषित करने के लिए का सामना करना पड़ रहा हूँकैसे सेटअप करने के लिए एक टेबल-वैल्यूड-समारोह के अंदर एक CTE के लिए maxrecursion विकल्प
यहाँहै CTE (एक सरल कैलेंडर):
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)
और 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)
)
TVF ऊपर
maxrecursion विकल्प बिना ठीक चल रहा है लेकिन वहाँ विकल्प के साथ एक सिंटैक्स त्रुटि है। समाधान क्या है?
संबंध
यह उत्तर थोड़ा बेहतर हो सकता है, क्योंकि किसी फ़ंक्शन में सीटीई (रिकर्सन सीमा के बिना) को याद रखने की आवश्यकता नहीं है। –
बेशक यह समस्या हल करता है, लेकिन इसमें "संभवतः एक कमी" है, क्योंकि यह तालिका-मूल्यवान फ़ंक्शन 'गैर-रेखांकित' है। प्रदर्शन के मामले में यह क्रूसियल हो सकता है। – pkuderov
जैसा कि मैंने कहा था, "इसके साथ शायद दक्षता समस्याएं हैं, लेकिन मैं इसे अपने मामले में बर्दाश्त कर सकता हूं।" – Crisfole