आप किस समस्या को हल करने की कोशिश कर रहे हैं? अलग से चलाने का कोई मतलब नहीं है UPDATE
लूप में प्रत्येक विभाजन के विरुद्ध कथन। यदि आप वास्तव में तालिका में प्रत्येक पंक्ति को अपडेट करना चाहते हैं जहां ab = 'c'
, बस एक ही UPDATE
जारी करें बयान
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
संभावित रूप से PARALLEL
. के साथ संकेत जो Oracle को समानांतर में कई विभाजनों को अद्यतन करने की अनुमति देगा।
यदि आप वास्तव में, वास्तव में प्रत्येक विभाजन को स्वतंत्र रूप से अद्यतन करना चाहते हैं, तो विभाजन कुंजियों के आधार पर ऐसा करना अधिक समझ में आता है। उदाहरण के लिए, यदि आपकी तालिका में दिनांक के आधार पर दैनिक विभाजन हैं
FOR i IN 1 .. <<number of daily partitions>>
LOOP
UPDATE cdr_data cdt
SET a = 'B'
WHERE ab = 'c'
AND partition_key = <<minimum date>> + i;
END LOOP;
partition( <<partition name>> )
. का उपयोग करना वाक्यविन्यास एक पूर्ण अंतिम उपाय है। यदि आप वास्तव में उस पथ पर जाने के लिए दृढ़ हैं, तो आपको गतिशील SQL का उपयोग करना होगा, लूप में SQL कथन का निर्माण करना होगा और EXECUTE IMMEDIATE
का उपयोग करना होगा। या dbms_sql
इसे निष्पादित करने के लिए।