मैं एक संग्रहीत प्रक्रिया लिख रहा हूं जिसमें इसमें बहुत सारी कंडीशनिंग की आवश्यकता है। सी # .NET कोडिंग से सामान्य ज्ञान के साथ अपवाद प्रदर्शन को नुकसान पहुंचा सकता है, मैंने हमेशा पीएल/एसक्यूएल में उनका उपयोग करने से बचा है।ओरेकल पीएल/एसक्यूएल - संग्रहित प्रक्रिया प्रदर्शन के लिए NO_DATA_FOUND अपवाद खराब हैं?
SELECT COUNT(*) INTO var WHERE condition;
IF var > 0 THEN
SELECT NEEDED_FIELD INTO otherVar WHERE condition;
....
-या-
SELECT NEEDED_FIELD INTO var WHERE condition;
EXCEPTION
WHEN NO_DATA_FOUND
....
दूसरे मामले में थोड़ा लगता है: यह संग्रहीत proc में मेरे कंडीशनिंग ज्यादातर के चारों ओर एक रिकॉर्ड मौजूद है या नहीं, जो मैं कर सकता दो तरह से घूमती मेरे लिए अधिक सुरुचिपूर्ण, क्योंकि तब मैं NEEDED_FIELD का उपयोग कर सकता हूं, जिसे मुझे पहले मामले में शर्त के बाद पहले कथन में चयन करना होगा। कम कोड लेकिन अगर संग्रहित प्रक्रिया COUNT (*) का उपयोग करके तेज़ी से चलती है, तो मुझे प्रसंस्करण गति को बनाने के लिए थोड़ा और टाइप करना बुरा नहीं लगता है।
कोई संकेत? क्या मुझे एक और संभावना याद आ रही है?
EDIT मुझे यह उल्लेख करना चाहिए था कि यह सब पहले से ही एक लूप में घोंसला है। निश्चित नहीं है कि यह कर्सर का उपयोग करने में कोई फर्क पड़ता है, क्योंकि मुझे नहीं लगता कि मैं कर्सर को फॉर लूप में चुनने के रूप में अस्वीकार कर सकता हूं।
धन्यवाद, स्टीव। ऊपर मेरा संपादन देखें। क्या इससे कोई फर्क पड़ता है? –
ओह, दुह! बेशक यह काम करेगा। ठीक है, और कॉफी की जरूरत है। धन्यवाद। बेशक –