2010-01-21 12 views
5

मैं इस समय संग्रहीत प्रक्रियाओं में देख रहा हूं।[MySQL]: संग्रहित प्रक्रिया और चयन बयान

this लेख (पेज 8) mysql वेबसाइट के देव अनुभाग में ...

आमतौर पर के अनुसार, यह संग्रहीत प्रक्रियाओं में SELECT स्टेटमेंट्स डाल करने के लिए सामान्य नहीं है, इस उदाहरण के लिए है। मैंने फैसला किया कि कुछ प्रक्रिया बस हमारी तालिका से चुनें, ताकि जब आप प्रक्रिया को कॉल करते हैं तो यह स्पष्ट होगा कि यह काम कर रहा है।

वह क्यों है?

जटिल चुनिंदा बयानों को सरल बनाने के लिए संग्रहीत प्रक्रियाओं का उपयोग कर रहा है 'सर्वोत्तम प्रथाओं' नहीं?

कुछ विशिष्ट स्थितियां क्या हैं जहां संग्रहित प्रक्रिया का उपयोग करना फायदेमंद है? उदाहरण?

उत्तर

3

आम तौर पर संग्रहीत प्रक्रिया डेटाबेस में जटिल प्रसंस्करण के लिए लक्षित होती है। उनके लाभों के बारे में बहस बहस कर रही है। मैंने कभी नहीं देखा कि संग्रहीत प्रक्रिया में चयन एक बुरी चीज थी, लेकिन मैं उम्मीद नहीं करता कि प्रत्येक एकल SQL कथन जिसे लिखा जाना है या तो संग्रहीत प्रक्रिया में जाता है। यह उन प्रसंस्करण के लिए आरक्षित होना चाहिए जिनमें कई कथन शामिल हैं और बार-बार प्रदर्शन करना होगा।

जेफ के बारे में उनके बारे में एक राग है here

विशिष्ट उदाहरणों के लिए अपने सीधा प्रश्न का उत्तर देने के लिए, मैंने पाया है कि पोर्टेबिलिटी समस्या के कारण मैं उनसे बचता हूं। मैं अपने सभी प्रसंस्करण अनुप्रयोग पक्ष करने का प्रयास करता हूं। साथ ही मुझे अपने आवेदन में नेटवर्क बैंडविड्थ के बारे में चिंता करने की ज़रूरत नहीं है, इसलिए प्रत्येक स्थिति अलग है।

+0

मैं यह धारणा थी कि संग्रहीत प्रक्रिया के जहां अधिक पोर्टेबल एक आवेदन संचालित क्वेरी से। जहां तक ​​आप अपने क्वेरी तर्क को एप्लिकेशन से अलग कर सकते हैं। –

+0

लेकिन वे डीबीएमएस की अपनी भाषा में लिखे गए हैं। एसक्यूएल सर्वर के संग्रहित प्रक्रियाओं T-SQL में लिखे गए हैं तथा PL/SQL आदि में Oracle की आप एक मंच से अगले करने के लिए डेटाबेस स्थानांतरित नहीं कर सकते। कुछ संगठनों के लिए जो एक बड़ा सौदा नहीं है लेकिन दूसरों के लिए ... –

+0

निश्चित रूप से सच है ... एक डीबी सिस्टम से अगले तक पोर्टेबिलिटी जोखिम भरा है। पीडीएफ मैं जुड़ा हुआ mysql-विशिष्ट वाक्यविन्यास/सुविधाओं में से कुछ (के साथ ही कई अन्य सम्मेलनों) आप को गैर-mysql आधारित डीबी के पर संगतता समस्याओं बनाए रखने के लिए करने से बचना चाहिए की रूपरेखा। लेकिन, अगर मुझे गलत नहीं लगता है, तो संग्रहीत प्रक्रिया पोर्टेबिलिटी को एक भाषा से अगले तक सुविधाजनक बनाती है। –

3

एक विशिष्ट स्थिति है जहाँ यह संग्रहीत प्रक्रिया/दिनचर्या का उपयोग करने के लिए फायदेमंद है कि यह त्रुटि OO प्रतिमान में कार्यों के समान मानकों के आधार पर जाँच प्रदान कर सकता है। यह जोड़ा देता है 'Encapsulation'

एक साधारण उदाहरण:

CREATE PROCEDURE select_table(IN @id INT) 
BEGIN 
    IF @id < O THEN 
    -- ERROR! do something here 
    ELSEIF 
    SELECT * from TABLE WHERE id = @id; 
    END IF 
END 
+0

नोट किया गया। निश्चित रूप से एक बहुत ही शक्तिशाली सुविधा। –

संबंधित मुद्दे