आपको पहले CTE को डालने की जरूरत है और फिर INSERT INTO को अपने चुनिंदा स्टेटमेंट के साथ मिलाना है। इसके अलावा, CTE के नाम के बाद "AS" कीवर्ड वैकल्पिक नहीं है:
WITH tab AS (
bla bla
)
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos (
BatchID,
AccountNo,
APartyNo,
SourceRowID
)
SELECT * FROM tab
कृपया ध्यान दें कि कोड मानता है कि सीटीई बिल्कुल चार फ़ील्ड लौटाएगा और उन फ़ील्ड्स क्रम में मेल खा रहे हैं और INSERT स्टेटमेंट में निर्दिष्ट लोगों के साथ टाइप करते हैं। यदि ऐसा नहीं है, तो बस उन क्षेत्रों के एक विशिष्ट चयन के साथ "सेलेक्ट *" को बदलें, जिनकी आपको आवश्यकता है।
एक समारोह का उपयोग करने पर आपके प्रश्न के लिए, मैं कहूंगा कि "यह निर्भर करता है"। यदि आप डेटा को केवल प्रदर्शन कारणों के कारण तालिका में रख रहे हैं, और फ़ंक्शन के माध्यम से उपयोग करते समय गति स्वीकार्य है, तो मैं फ़ंक्शन को एक विकल्प मानता हूं। दूसरी ओर, यदि आपको कई अलग-अलग प्रश्नों में सीटीई के परिणाम का उपयोग करने की आवश्यकता है, और गति पहले से ही एक मुद्दा है, तो मैं एक तालिका (या तो नियमित या अस्थायी) के लिए जाऊंगा।
Common_table_expression (Transact-SQL) के साथ