मेरे पास एक प्रश्न है:
SELECT column as averyveryveryverylongalias (more than 30 characters)
FROM Table_name
यह ORA-00972 पहचानकर्ता को त्रुटि देता है बहुत लंबा है , क्या यह उर्फ को कम किए बिना काम करने के लिए कोई टिप है?
धन्यवाद
जवाबों:
नहीं, Oracle संस्करण 12.2 से पहले, पहचानकर्ताओं को लंबाई में 30 वर्णों से अधिक की अनुमति नहीं है। Oracle SQL भाषा संदर्भ देखें ।
हालांकि, संस्करण 12.2 से वे 128 बाइट तक लंबे हो सकते हैं। (नोट: बाइट्स, वर्ण नहीं)।
त्रुटि भी उद्धरण और एकल qutoes के quirky हैंडलिंग के कारण होता है। क्वेरी के अंदर एकल उद्धरण शामिल करने के लिए, एकल उद्धरणों का दोगुना उपयोग करें।
यह काम नहीं करेगा
select dbms_xmlgen.getxml("Select ....") XML from dual;
या यह
select dbms_xmlgen.getxml('Select .. where something='red'..') XML from dual;
लेकिन यह काम नहीं करता है
select dbms_xmlgen.getxml('Select .. where something=''red''..') XML from dual;
वह ऑब्जेक्ट जहां ओरेकल पहचानकर्ताओं के नाम को संग्रहीत करता है (उदाहरण के लिए उपयोगकर्ता के तालिका नाम USER_TABLES के रूप में नामित तालिका में संग्रहीत किए जाते हैं और उपयोगकर्ता के स्तंभ नाम USER_TAB_COLUMNS के रूप में नामित तालिका में संग्रहीत किए जाते हैं) में NAME कॉलम होते हैं (जैसे TABLE_NAME) आकार का USER_TABLES में) Varchar2 (30) ... और यह वस्तुओं या पहचानकर्ताओं की सभी प्रणाली तालिकाओं के माध्यम से समान है -
DBA_ALL_TABLES ALL_ALL_TABLES USER_ALL_TABLES
DBA_PARTIAL_DROP_TABS ALL_PARTIAL_DROP_TABS USER_PARTIAL_DROP_TABS
DBA_PART_TABLES ALL_PART_TABLES USER_PART_TABLES
DBA_TABLES ALL_TABLES USER_TABLES
DBA_TABLESPACES USER_TABLESPACES TAB
DBA_TAB_COLUMNS ALL_TAB_COLUMNS USER_TAB_COLUMNS
DBA_TAB_COLS ALL_TAB_COLS USER_TAB_COLS
DBA_TAB_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTS
DBA_TAB_HISTOGRAMS ALL_TAB_HISTOGRAMS USER_TAB_HISTOGRAMS
DBA_TAB_MODIFICATIONS ALL_TAB_MODIFICATIONS USER_TAB_MODIFICATIONS
DBA_TAB_PARTITIONS ALL_TAB_PARTITIONS USER_TAB_PARTITIONS
यदि आपने हाल ही में स्प्रिंगबूट को 1.4.3 में अपग्रेड किया है, तो आपको yml फ़ाइल में परिवर्तन करने की आवश्यकता हो सकती है:
1.3 में yml:
jpa:
hibernate:
namingStrategy: org.hibernate.cfg.EJB3NamingStrategy
१.४.३ में yml:
jpa:
hibernate:
naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
जैसा कि अन्य ने बताया है, ओरेकल एसक्यूएल में नाम 30 वर्णों से कम या बराबर होना चाहिए। मैं यह जोड़ना चाहूंगा कि यह नियम केवल टेबल नामों पर ही नहीं बल्कि फील्ड नामों पर भी लागू होता है। इसलिए यह अब आपके पास है।