sourcecode

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

codebag 2023. 3. 29. 21:27
반응형

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

다음과 같은 질문이 있습니다.

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

ORA-00972 identifier is too long이라는 에러를 반환합니다.에일리어스를 짧게 하지 않고 동작시키기 위한 힌트가 있나요?

감사해요.

아니요. Oracle 버전 12.2 이전에는 식별자의 길이가 30자를 초과할 수 없습니다.Oracle SQL Language Reference를 참조하십시오.

단, 버전 12.2부터는 최대 128바이트까지 사용할 수 있습니다(주: 바이트, 문자가 아닙니다).

이 에러는, 견적과 싱글 큐토의 변덕스러운 취급에 의해서도 발생합니다.쿼리 내에 작은따옴표를 포함하려면 작은따옴표를 이중으로 사용합니다.

이거 안 돼

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이 ID 이름을 저장하는 개체(예: 사용자의 테이블 이름이 USER_라는 테이블에 저장됩니다).TABles 및 사용자의 열 이름은 USER_라는 이름의 테이블에 저장됩니다.TAB_COLUMNS)에는 NAME 컬럼이 있습니다(USER_의 TABLE_NAME 등).표)의 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 파일을 변경해야 할 수 있습니다.

yml in 1.3 :

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

반응형