Tuesday 15 April 2014

sql server - Stored procedure inserting values into a table using Table-Valued Parameters -


निम्न सरल संरचना को देखते हुए:

  टेबल: उत्पाद (उत्पाद आईडी, उत्पादनाम) सारणी: श्रेणी तालिका (श्रेणी आईडी, श्रेणीनाम): उत्पाद Id, CategoryId   

मेरे पास एक तालिका प्रकार है, जिसे मैं एक संग्रहीत कार्यविधि में किसी अन्य तालिका में मान सम्मिलित करना चाहता हूं अगर वे मौजूद न हों ।

  टाइप करें स्ट्रिंग लिस्ट टीटीपी के रूप में टेबल (एनवीआरएआरएआर (255) नल प्राथमिक कुंजी नहीं)   

मैं एक संग्रहीत कार्यविधि में निम्नलिखित कार्य करना चाहता हूं जहां मैं एक उत्पादनाम में पास करें, और श्रेणी नामों की स्ट्रिंग लिस्ट टीटीपी टाइप करें

  1. मेरी स्ट्रिंग लिस्ट टीटीबीटी टाइप करें
  2. वर्ग तालिका में स्ट्रिंग सम्मिलित करें यदि यह मौजूद नहीं है
  3. डाला या पहले से मौजूद श्रेणी की पहचान प्राप्त करें
  4. उत्पाद तालिका, और श्रेणी आईडी को लिंक टैब में डालें।

    मैं शायद इसके साथ संघर्ष कर सकता हूं कुछ काम कर रहा है, लेकिन मुझे एमएस एसक्यूएल के साथ थोड़ा अनुभव है, और संग्रहीत कार्यविधि सामान्य रूप से, और मुझे डर है कि मैं ऐसा करने का एक बहुत ही अक्षम तरीके लिखने को समाप्त करेगा।

    श्रेणी आईडी को कैप्चर करने के लिए आप MERGE कथन का उपयोग कर सकते हैं।

      DECLARE @changes TABLE (ChangeID VARCHAR (10), Id INTEGER); DECLARE @JustSomeRandomVariable INT; TARGET.Category = SOURCE.s पर स्रोत के रूप में @ डेटा का उपयोग करें, जैसे श्रेणी के रूप में करें। (जब श्रेणी)) मूल्यों (स्रोत), जब मिलान की गई तारीख में सेट की गई जस्टसोमरेन्डिवेंट = 1 आउटपुट $ 1 कार्रवाई, डाली गई। I @परिवर्तन;   

    मर्ज स्टेटमेंट में यादृच्छिक चर सुनिश्चित करता है कि अद्यतन @ परिवर्तन तालिका चर में लॉग इन हो।

    अब आप अपने लिंक तालिका को अपडेट करने के लिए @ बदलाव का उपयोग कर सकते हैं ।

      लिंक्ड में चुनें प्रोडक्ट आईडी, बदलाव आइड @ परिवर्तनों से   

    बस एक साधारण चयन क्वेरी के साथ आवश्यक उत्पाद आईडी को पुनः प्राप्त करें।

    संपादित करें:

    यह संभवतः लिंक तालिका में दोहरे रिकॉर्ड में हो सकता है संभव है कि आपको इसे थोड़ा ज़्यादा ज़ूम करने की आवश्यकता हो, शायद लिंक तालिका में भी सम्मिलित करने के लिए मर्ज कथन का उपयोग करें।

    @डेटा आपकी प्रक्रिया की स्ट्रिंग लिस्ट टीटीबीटी प्रकार के पैरामीटर है।

No comments:

Post a Comment