sql server - Iterate sql data with cursors -


तो, मेरे पास "बॉम" नामक एक एसक्यूएल टेबल है।

  • पेरेंटपेर्टआईडी
  • ChildPartId

    कल्पना कीजिए कि मेरे पास टेबल से भरा डेटा है (जैसे उप-स्तर की अज्ञात मात्रा):

      | पेरेंटपेर्टआईडी | CHILDPARTID | + --------------- + -------------- + | एनके-एफएस-डीआर -62 डीआर | 2001020060 | | 2001020060 | 2002014018 | | 2002014018 | 120011 | | एनके-पीएच-डीआर -3 एमएच | 2001916023 | असल में मैं "एनके-एफएस-डीआर -62DR" का चयन करना चाहता हूं जो कि उसके नीचे सभी बाल भागों का चयन करेगी, ऐसा लग रहा होगा  
      | पेरेंटपेर्टआईडी | CHILDPARTID | + --------------- + -------------- + | एनके-एफएस-डीआर -62 डीआर | 2001020060 | | 2001020060 | 2002014018 | | 2002014018 | 120011 |   

    बोम अज्ञात स्तरों की गहराई से गहरा जा सकता है।

    अतः, मैं कर्सर के कुछ रूप को शाब्दिक सभी सबलेवल ।

    मेरे पास वर्तमान में एक कर्सर है लेकिन मैं डेटा को पुनरावृत्त करने का एक तरीका नहीं सोच सकता।

    यहां मेरा वर्तमान कोड है (केवल स्तर 1 गहरा जाता है):

      बनाओ टेबल #tmpBillOfMaterial (ParentPartId VARCHAR (18), ChildPartId VARCHAR (18)) DECLARE @ParentPartId VARCHAR (18) #tmpBillOfMaterial (ParentPartId, ChildPartId) में शामिल करें SELECT b.ParentPartId, b.ChildPartId JBds से .BoM b WHERE b.ParentPartId = 'NK-FS-DR-62DR' DECLARE कर्सरStage1 चयन के लिए कर्सर B.ChildPartId से jbds.BoM b WHERE b.ParentPartId = 'एनके- एफएस- DR-62DR' ओपन कर्सर चरण 1 FETCH कर्सर से आगे चरण 1 INTO @ParentPartId WHELE @@ FETCH_STATUS = 0 बस INSTECT #tmpBillOfMaterial (ParentPartId, ChildPartId) का चयन करें b.ParentPartId, b.ChildPartId से jbds.BoM b WHERE b.ParentPartId = @ParentPartId FETCH आगे से cursorStage1 में @ParentPartId EndCLOSE कर्सर स्टाग e1 डेललोकेट कर्सर स्टैज 1 का चयन करें * # सेएमपीबीओफ़ोमेटरी ड्रॉप तालिका #tmpBillOfMaterial   

    मैंने कर्सर के अंदर कर्सर को जोड़ने की कोशिश की है, लेकिन यह केवल सभी स्तरों पर चलने के बजाय 2 स्तरों को प्राप्त कर सकता है।

    सबसे आसान एक रिकर्सिव सीटीई का उपयोग करना है:

     ; x के साथ के रूप में माता-पिता, बॉम से शिशुपाट, जहां माता -पिताजी = 'एनके-एफएस-डीआर -62 डीआर' संघ सभी बॉम। पेरेंटपेप्रिटिड, बोम। पेरेंटपेप्टाइड = एक्स। चाइल्डपार्टिड पर बॉम इनर एक्स एक्स से बॉम। चाइल्डपार्टिड) * एक्स से चयन करें  < / प्री>  

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -