Nice programing

ORA-00972 식별자가 너무 긴 별칭 열 이름입니다.

nicepro 2020. 11. 11. 20:40
반응형

ORA-00972 식별자가 너무 긴 별칭 열 이름입니다.


다음과 같은 쿼리가 있습니다.

SELECT column as averyveryveryverylongalias (more than 30 characters)
   FROM Table_name

ORA-00972 identifier is too long 오류를 반환합니다 . 별칭을 짧게 만들지 않고 작동하도록하는 팁이 있습니까?

감사


아니요, Oracle 버전 12.2 이전에는 식별자 길이가 30자를 초과 할 수 없습니다. 참조 오라클 SQL 언어 참조 .

그러나 버전 12.2부터 최대 128 바이트까지 가능합니다. (참고 : 문자가 아닌 바이트).


이 오류는 또한 따옴표 및 단일 quto의 기발한 처리로 인해 발생합니다. 쿼리 내부에 작은 따옴표를 포함하려면, 사용은 두 배가 작은 따옴표를.

이것은 작동하지 않습니다

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;

Oracle이 식별자 이름을 저장하는 객체 (예 : 사용자의 테이블 이름은 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

Argos보고 시스템을 프런트 엔드로 사용하고 Oracle을 뒤에 사용하고 있습니다. 방금이 오류가 발생했으며 시작 부분에 큰 따옴표가 있고 끝에 작은 따옴표가있는 문자열로 인해 발생했습니다. 큰 따옴표를 단일로 바꾸면 문제가 해결되었습니다.


최근에 springboot를 1.4.3으로 업그레이드 한 경우 yml 파일을 변경해야 할 수 있습니다.

1.3의 yml :

jpa: 
  hibernate: 
    namingStrategy: org.hibernate.cfg.EJB3NamingStrategy

1.4.3의 yml :

jpa: 
  hibernate: 
    naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

다른 사람들이 언급했듯이 Oracle SQL의 이름은 30 자 이하 여야합니다. 이 규칙은 테이블 이름뿐만 아니라 필드 이름에도 적용됩니다. 그래서 거기에 있습니다.

참고 URL : https://stackoverflow.com/questions/3085562/ora-00972-identifier-is-too-long-alias-column-name

반응형