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

ORA-00904 तालिकाओं से डेटा सम्मिलित/क्वेरी करते समय

ऐसा लगता है कि आपने अपने डीडीएल में कोट्स के तहत कॉलम नाम निर्दिष्ट किए हैं।

Oracle एक केस संवेदनशील के रूप में उद्धरणों के तहत पहचानकर्ताओं को मानता है, इसलिए "बॉडी" या "वर्ष" के रूप में एक कॉलम नाम के साथ एक टेबल बनाने से आपकी क्वेरी में बॉडी या वर्ष का समाधान नहीं होगा, क्योंकि जब आप कोट्स को छोड़ देते हैं, तो यह अपर केस वेरिएंट पर विचार करता है।

तो जब आपके पास यह हो:

 create table driver_case (registration varchar2(60), 
                      make varchar2(60),
                      model varchar2(60),
                      gvw number,
                      "year" number, 
                      "body" varchar2(60));

और फिर ऐसा करने का प्रयास करें

select year, body from driver_case

तब Oracle कॉलम "YEAR", "BODY" को खोजने की कोशिश करता है (याद रखें, बिना कोट्स के पहचानकर्ता के बिना अपर केस में कनवर्ट हो जाता है) जो आपकी टेबल में "वर्ष", "बॉडी" जैसा नहीं है।

आपके समाधान?

  • डीडीएल में उद्धरणों के तहत कॉलम नामों का उल्लेख न करें
  • यदि आप उपरोक्त बिंदु की अवहेलना करते हैं, तो आपको जरूरी अपने सभी डीएमएल स्टेटमेंट में कोट्स के तहत कॉलम नामों का उल्लेख करें।

मैं उपरोक्त बिंदु को इस SQL Fiddle में प्रदर्शित करता हूं



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएल/एसक्यूएल में एक विशिष्ट चरित्र के बाद सभी पात्रों को हटा दें

  2. Oracle.DataAccess (ODP.NET) सरणी बाइंडिंग मान अपेक्षित सीमा के भीतर नहीं आता है

  3. मैं इस टाइमस्टैम्प को उस प्रारूप में कैसे प्राप्त करूं जो मैं चाहता हूं, Oracle SQL

  4. ईबीएस के साथ एडीएफ एकीकरण

  5. Oracle कस्टम IsNumber फंक्शन प्रेसिजन और स्केल के साथ