2010-05-07 9 views
2

제목에 오류가 표시됩니다.ora-00972 식별자가 너무 깁니다. 오라클 10g

나는 36 개의 charecter ID를 사용하고 있습니다. 이 오류는 내 asp.net 웹폼의 sqldatasource에서만 발생합니다. Oracle sql developer에서 업데이트를 수행 할 때 문제가되지 않습니다.

어떻게 해결할 수 있습니까?

답변

3

오라클은 최대 30 자의 식별자를 지원하고 식별자 길이는 36보다 커서 30 자 길이로 만듭니다.

볼 당신이 성공적으로 SQL 개발자와 같은 다른 환경에서 DML (UPDATE TABLENAME SET를 ...)을 실행하는 경우, 다음 asp.net 코드가 어떻게 든 지정 또는 테이블의 이름을 구성해야 link

+0

나는 그것을 읽었지만 오류가 발생하지 않고 Oracle SQL 개발자로부터 업데이트 할 수 있다고 말했습니까? – Frank

2

이 또는 테이블의 열 이름을 잘못. 오라클은 다른 검사를하기 전에 이들 중 하나를> 30 자로 구문 분석하면이 예외를 throw합니다.

Srinivas가 지적했듯이 최대 길이는 30이므로 SQL Developer에서 36 자의 식별자를 사용할 수 없습니다. SQL Developer에서 "작동 중"인 문을 게시 할 수 있습니까?

+0

SERVICE (SERVICE_ID) 값 ('03eb2491-9145-414f-8bdb-c5827a74151c')에 삽입하십시오. 필드가 SERVICE_ID NVARCHAR2 (36) NOT NULL – Frank

+0

여기에 혼란스러워합니다. 00972 오류가 발생하면 테이블 이름 (SERVICE) 또는 열 이름 (SERVICE_ID)을 참조합니다. 삽입하는 DATA 길이에 대한 예외는 ORA-12899 : 컬럼 값이 너무 큽니다. 실제 예외를 잘못 식별 할 수있는 asp.net 계층에 일부 오류 트래핑이 있습니까? – dpbradley

1

SERVICE_ID NVARCHAR2 (36) NULL은

는 멀티 바이트 문자를 사용하도록 구성하여 SQL Developer는 설정되어

하지? 야생의 추측은 특히 ORA-00972가 아닌 ORA-12899: value too large for column을 던질 것으로 예상됩니다.

1

아, 알겠습니다. 36 자 길이의 열 이름이 아니라 실제 데이터입니다. 다행히 그걸 정리 해줘서 고마워.

"ASP.NET SqlDataSource에서이 문제가 발생하는 이유는"ASCII와 유니 코드 사이의 변환 문제가있을 수 있습니다. NVARCHAR2는 유니 코드이지만, 유니 코드 세계에서는 무언가 잘 작동하지 않는다고 생각됩니다. 웹 서버, 클라이언트, 데이터베이스, 무엇이든 생각할 수있는 모든 것을 확인하십시오. 줄 바꿈 어딘가에 유니 코드를 올바로 말하지 않는 ASCII 클라이언트가 있으며 혼합되어 있습니다. 유니 코드 문자열 길이 (약 32 유니 코드 문자는 64 바이트 (UTF-16으로 가정))를 차지합니다.

행운을 빈다.

관련 문제