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

PLS-00402:डुप्लिकेट कॉलम नामों से बचने के लिए कर्सर की चयन सूची में उपनाम आवश्यक है

आपकी समस्या यह है कि आपकी क्वेरी कोई उपनाम सेट किए बिना कुछ शाब्दिक स्ट्रिंग मानों का चयन कर रही है:

select ..., 'IPU', ... , 'IPU', ..., 'EUR', ...

उपरोक्त मामले में, Oracle कुछ इस तरह दिखने वाले बदसूरत उपनामों को स्वतः उत्पन्न करेगा:

select ..., 'IPU' AS "'IPU'", ..., 'IPU' AS "'IPU'", ..., 'EUR' AS "'EUR'", ...

तो जैसा कि आप देख सकते हैं, अब आपके पास 3 बहुत बदसूरत कॉलम नाम हैं जिनके साथ काम करना बहुत अजीब है, और उनमें से 2 डुप्लिकेट हैं, जिसके परिणामस्वरूप आपको त्रुटि मिल रही है।

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

select ..., 'IPU' AS some_col_1, ..., 'IPU' AS some_col_2, ..., 'EUR' AS some_col_3, ...

मजे की बात यह है कि आप नहीं हैं लूप के लिए अपने कर्सर में क्वेरी पढ़ते समय वर्तमान में उन 3 मानों का उपयोग कर रहे हैं। अपने कर्सर के माध्यम से पढ़ते/लूप करते समय, कर्सर से 3 मानों को पढ़ने की कोशिश करने के बजाय, आप मानों को प्रिंट करते समय फिर से हार्ड-कोड करते हैं।

तो वास्तव में, यदि आप वास्तव में कर्सर से 3 मानों को पढ़ने की परवाह नहीं करते हैं, तो उन्हें पूरी तरह से क्वेरी से हटा दें। अन्यथा, अपने हार्ड-कोडेड मानों को अपने DBMS_OUTPUT.PUT_LINE(...) से बदलें आपके द्वारा सेट किए गए उपनामों के साथ।

तो एक बार आपकी क्वेरी ठीक हो जाने के बाद, इसके बजाय:

DBMS_OUTPUT.PUT_LINE(... || 'IPU' || ... || 'IPU' || ... || 'EUR' || ...);

आपको शायद इस तरह से कर्सर का उपयोग करना चाहिए:

DBMS_OUTPUT.PUT_LINE(... || De_Dub_rec.some_col_1 || ... || De_Dub_rec.some_col_2 || ... || De_Dub_rec.some_col_3 || ...);


  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 SQL प्रश्नों में प्रतिशत (%) और एम्परसेंड (&) जैसे विशेष वर्णों को कैसे संभालें/उपयोग करें

  2. ओरेकल डीबी में अंतिम सम्मिलित रिकॉर्ड की आईडी प्राप्त करें

  3. क्या मैं Oracle में varchar2 के लिए एक नंबर पास कर सकता हूँ?

  4. java.lang.ArrayIndexOutOfBoundsException oracle.jdbc.driver.T4CTTIrxd.readBitVector (T4CTTIrxd.java:135) पर

  5. इस कोड में फ़ील्ड अलग-अलग नाम से कैसे मिल सकते हैं?