Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

अद्यतन के लिए थोक संग्रह का उपयोग कर

समस्या यह है कि आप एक कमिट में लाने की कोशिश कर रहे हैं।

जब आप My_Data_Curखोलते हैं for update . के साथ खंड में, Oracle को प्रत्येक पंक्ति को My_Data_1 . में लॉक करना होता है तालिका इससे पहले कि वह किसी भी पंक्ति को वापस कर सके। जब आप commit , Oracle को उन सभी तालों को छोड़ना होगा (Oracle द्वारा बनाए गए ताले लेन-देन की अवधि नहीं रखते हैं)। चूंकि कर्सर में अब आपके द्वारा अनुरोधित ताले नहीं हैं, Oracle को कर्सर को बंद करना होगा क्योंकि यह अब for update को संतुष्ट नहीं कर सकता है खंड। इसलिए, दूसरा फ़ेच 0 पंक्तियों को वापस करना चाहिए।

सबसे तार्किक तरीका लगभग हमेशा commit . को हटाना होगा और एक ही लेन-देन में पूरी बात करें। यदि आपको वास्तव में, वास्तव में, वास्तव में अलग लेनदेन की आवश्यकता है, तो आपको लूप के प्रत्येक पुनरावृत्ति के लिए कर्सर को खोलना और बंद करना होगा। सबसे अधिक संभावना है, आप कर्सर को हर बार खोले जाने पर केवल 100 पंक्तियों को वापस करने के लिए प्रतिबंधित करने के लिए कुछ करना चाहेंगे (यानी एक rownum <= 100 क्लॉज) ताकि आपको लॉक लगाने के लिए हर पंक्ति पर जाने का खर्च न उठाना पड़े और फिर लूप के माध्यम से हर बार लॉक को रिलीज़ करने के लिए आपके द्वारा संसाधित और हटाए गए 100 के अलावा हर पंक्ति पर जाने का खर्च न उठाना पड़े।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle ट्रिगर जो मासिक आधार पर बाधा की जाँच करता है

  2. SQL का उपयोग करके किसी तालिका में स्तंभों की संख्या कैसे गिनें?

  3. Sql लोडर - दूसरा संलग्नक स्ट्रिंग मौजूद नहीं है

  4. Oracle में JSON सरणी से विशिष्ट तत्व का चयन कैसे करें JSON CLOB प्रकार

  5. विभिन्न डेटा प्रकार के साथ केस स्टेटमेंट