हम SQL सर्वर 2005 का उपयोग करते हैं। हमारे सभी डेटा एक्सेस संग्रहीत प्रक्रियाओं के माध्यम से किया जाता है। हमारी चयन संग्रहित प्रक्रियाएं हमेशा कई परिणाम सेट लौटाती हैं।एसक्यूएल संग्रहीत प्रक्रियाओं में कोड का पुन: उपयोग कैसे करें?
उदाहरण के लिए:
CREATE PROCEDURE hd_invoice_select(@id INT) AS
SELECT * FROM Invoice WHERE InvoiceID = @id
SELECT * FROM InvoiceItem WHERE InvoiceID = @id
SELECT * FROM InvoiceComments WHERE InvoiceID = @id
RETURN
हमारे आवेदन के डेटा का उपयोग स्तर एक ऑब्जेक्ट परिणाम (ओ/आर मैपर शैली) पर आधारित ग्राफ बनाता है।
मेरी समस्या यह है कि हमारे पास कई अलग-अलग चालान चयन संग्रहित प्रोसेस हैं। वे सभी अलग-अलग चयन मानदंडों के लिए, एक ही संरचना को वापस करते हैं। उदाहरण के लिए, मैं भी है:
CREATE PROCEDURE hd_invoice_selectAllForCustomer(@customerID INT) AS
SELECT * FROM Invoice WHERE CustomerID = @customerID
SELECT * FROM InvoiceItem WHERE InvoiceID IN
(SELECT InvoiceID FROM Invoice WHERE CustomerID = @customerID)
SELECT * FROM InvoiceComments WHERE InvoiceID = @id
(SELECT InvoiceID FROM Invoice WHERE CustomerID = @customerID)
RETURN
और मैं सहित कई अन्य लोगों के होते हैं:
hd_invoice_selectActive()
hd_invoice_selectOverdue()
hd_invoice_selectForMonth(@year INT, @month INT)
और मैं अवधारणाओं का एक बहुत के लिए एक ही पैटर्न (ग्राहकों, कर्मचारियों, आदि)
है हम बहुत सारे कोड की प्रतिलिपि बनाते हैं और रखरखाव वास्तव में कठिन है। जब एक अवधारणा की "संरचना" बदल जाती है, तो हमें सभी प्रोसेस को ठीक करना और ठीक करना पड़ता है और यह बहुत ही त्रुटि प्रवण होता है।
तो मेरा सवाल है: परिदृश्य में कोड का पुन: उपयोग करने का सबसे अच्छा तरीका क्या है?
हम एक समाधान के साथ आए जो temp तालिकाओं का उपयोग करता है। लेकिन यह बहुत ही सुरुचिपूर्ण नहीं है। मैं आपको अपने विचार साझा करने दूंगा और यदि आवश्यक हो तो मैं उस दृष्टिकोण पर आपकी टिप्पणियां प्राप्त करने के लिए आगामी समाधान में अपने समाधान का विवरण पोस्ट करूंगा।
धन्यवाद
यह बहुत अच्छा है। क्या आपको कोई विचार है कि यह कैसे करता है? क्या क्वेरी ऑप्टिमाइज़र अच्छा काम कर रहा है? आंतरिक रूप से, क्या यह temp तालिकाओं का उपयोग कर रहा है या यह वास्तव में सेट को एक साधारण मान के रूप में पास कर रहा है। – Sylvain
मुझे अभी तक उनका उपयोग करने का मौका नहीं मिला है, लेकिन उन्हें थोड़ा सा पढ़ा है। जब भी संभव हो तो मैं बहुत ही विरोधी अस्थायी तालिकाओं में हूं, इसलिए यह एक और अधिक सुरुचिपूर्ण समाधान की तरह लगता है जब तक यह अच्छा प्रदर्शन करता है। –
जैसे ही हम SQL 2008 में जाते हैं, हम इस दृष्टिकोण का उपयोग करने के लिए प्रतिक्रिया देंगे। – Sylvain