2009-07-22 20 views
5

संग्रहीत प्रक्रियाओं के अंदर तैयार बयानों का उपयोग करते समय, उन्हें प्रक्रिया के अंत में हटा दिया जाना चाहिए या नहीं, या इससे कोई फर्क नहीं पड़ता, और क्यों?संग्रहित प्रक्रियाओं के दौरान उपयोग किए जाने पर कथन तैयार किए जाने चाहिए?

कुछ कोड की व्याख्या:

CREATE PROCEDURE getCompanyByName (IN name VARCHAR(100)) 
NOT DETERMINISTIC 
BEGIN 
    PREPARE gcbnStatement FROM 'SELECT * FROM Companies WHERE name=? LIMIT 1'; 
    SET @companyName = name; 
    EXECUTE gcbnStatement USING @companyName; 
    DEALLOCATE PREPARE gcbnStatement; 
END $$ 

तो - पुनःआवंटन बयान वहाँ या नहीं होना चाहिए? चीयर्स!

/विक्टर

उत्तर

5

MySQL docs के अनुसार:

एक तैयार बयान सत्र में यह बनाया गया था के लिए विशिष्ट है। यदि आप पहले से तैयार कथन को हटाते हुए के बिना सत्र समाप्त करते हैं, तो सर्वर स्वचालित रूप से को हटा देता है।

तो, नहीं, मैं इसे स्पष्ट रूप से करने से परेशान नहीं करता, जब तक कि आपके पास बहुत लंबे समय तक चलने वाले सत्र न हों।

+0

धन्यवाद ... हालांकि यह "क्यों" बहुत अधिक नहीं है, यह निश्चित रूप से बहुत अच्छा जवाब है;) – Victor

+0

MySQL दस्तावेज़ भी कहते हैं: "एक तैयार कथन भी सत्र के लिए वैश्विक है। यदि आप एक तैयार कथन बनाते हैं एक संग्रहीत दिनचर्या, संग्रहीत दिनचर्या समाप्त होने पर _it को हटाया नहीं जाता है ._ "। इसलिए, मैं निष्पादन खत्म करने के बाद स्पष्ट रूप से deallocate होगा। – Yasir

1

यदि आप कनेक्शन पूलिंग का उपयोग करते हैं, तो निश्चित रूप से उन्हें अस्वीकार करना एक अच्छा विचार है।

+0

ठीक है, धन्यवाद। जानकारीपूर्ण। – Victor

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