2011-09-06 11 views
6

मुझे डेटा मौजूद होने पर केवल स्थानीय चर में चयन करने की आवश्यकता है।पीएल/एसक्यूएल में चयन करें - यदि डेटा मौजूद है

SELECT column1 INTO local_variable FROM table1 where column2 = <condition>; 

यहां अगर स्थिति से मेल खाने वाला कोई डेटा नहीं है तो मुझे कोई डेटा त्रुटि नहीं मिली है।

मुझे स्थानीय चर में केवल तभी चयन करना होगा जब स्थिति से मेल खाने वाला कुछ डेटा हो। क्या कोई साधारण प्रश्न है जो मेरी समस्या का समाधान करेगा।

उत्तर

12

शायद सबसे अच्छा तरीका है इसके अलावा no_data_found

begin 
    SELECT column1 INTO local_variable 
    FROM table1 where column2 = p_val; 
exception 
    when no_data_found then 
    local_variable := null; 
end; 

को संभालने के लिए, यदि आप (जो कॉलम 2 अद्वितीय है है) तो एक चाल आप कुछ नहीं कर सकता है प्राथमिक कुंजी/अद्वितीय कुंजी के साथ चयन कर रहे हैं है

SELECT max(column1) INTO local_variable 
    FROM table1 where column2 = p_val; 
+0

साथ अपना सामान करना क्यों अधिकतम() के लिए आवश्यक है? – shawnt00

+0

जब आप अधिकतम() चुनते हैं तो आपको no_data_found नहीं मिलेगा, जब आप ऐसी कोई पंक्ति मौजूद नहीं होंगे जहां कॉलम 2 = p_val' होगा तो आपको शून्य मान मिलेगा। तो यह सिर्फ एक चाल है जिसका उपयोग no_data_found अपवाद के खिलाफ बचाव के लिए किया जा सकता है, हालांकि मुझे विश्वास है कि इस अपवाद को स्पष्ट रूप से संभालना बेहतर है। – bpgergo

1

अच्छा ... चयन करने से पहले एक गिनती करें। या सिर्फ no_data_found अपवाद को संभाल लें।

आप एक कर्सर खोल सकते हैं और पंक्तियां नहीं लाई, एक गणना करते हैं और अगर यह 0 से अधिक है तो उस रिकॉर्ड

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