mam zapytanie typu:
SELECT column as averyveryveryverylongalias (more than 30 characters)
FROM Table_name
zwraca błąd Identyfikator ORA-00972 jest zbyt długi , czy jest jakaś wskazówka, aby działał bez skracania aliasu?
Dzięki
Nie, przed wersją Oracle 12.2 identyfikatory nie mogą przekraczać 30 znaków. Zobacz dokumentację języka Oracle SQL .
Jednak od wersji 12.2 mogą mieć długość do 128 bajtów. (Uwaga: bajty, nie znaki).
Błąd jest również spowodowany dziwaczną obsługą cudzysłowów i pojedynczych qutoes. Aby uwzględnić w zapytaniu pojedyncze cudzysłowy , użyj podwójnych apostrofów.
To nie zadziała
select dbms_xmlgen.getxml("Select ....") XML from dual;
albo to albo
select dbms_xmlgen.getxml('Select .. where something='red'..') XML from dual;
ale to działa
select dbms_xmlgen.getxml('Select .. where something=''red''..') XML from dual;
źródło
Obiekt, w którym Oracle przechowuje nazwę identyfikatorów (np. Nazwy tabel użytkownika są przechowywane w tabeli o nazwie USER_TABLES, a nazwy kolumn użytkownika są przechowywane w tabeli o nazwie USER_TAB_COLUMNS), mają kolumny NAME (np. TABLE_NAME w USER_TABLES) o rozmiarze Varchar2 (30) ... i jest jednolity we wszystkich tabelach systemowych obiektów lub identyfikatorów -
źródło
Używam systemu raportowania Argos jako frontendu i Oracle z tyłu. Właśnie napotkałem ten błąd i był on spowodowany przez ciąg znaków z podwójnym cudzysłowem na początku i pojedynczym cudzysłowem na końcu. Zastąpienie podwójnego cudzysłowu pojedynczym rozwiązało problem.
źródło
Jeśli niedawno zaktualizowałeś springboot do 1.4.3, może być konieczne wprowadzenie zmian w pliku yml:
yml w wersji 1.3:
yml w wersji 1.4.3:
źródło
Jak wspominali inni, nazwy w Oracle SQL muszą mieć 30 znaków lub mniej. Dodam, że ta reguła dotyczy nie tylko nazw tabel, ale także nazw pól. Więc masz to.
źródło