2012-07-25 2 views
3

오라클 10 g을 사용하고 있습니다.2 개의 긴 열이있는 테이블을 어떻게 만듭니 까?

Long 유형의 2 열을 필요로하는 테이블이 있습니다.

CREATE TABLE emp 
(   
    id1 LONG NULL, 
    id2 LONG NULL, 
    // 
    // other columns. 
); 

이 쿼리를 실행할 때이 오류가 발생합니다.

Error report: 
SQL Error: ORA-01754: a table may contain only one column of type LONG 
01754. 00000 - "a table may contain only one column of type LONG" 
*Cause: An attempt was made to add a LONG column to a table which already 
      had a LONG column. Note that even if the LONG column currently 
      in the table has already been marked unused, another LONG column 
      may not be added until the unused columns are dropped. 
*Action: Remove the LONG column currently in the table by using the ALTER 
      TABLE command. 

Google에서 검색했지만 적절한 해결책을 찾을 수 없습니다. 왜 그들은 LONG의 2 개의 열을 허용하지 않습니까?

number 대신에 열을 사용하는 것이 좋습니다. ??

어떻게이 작업을 수행 할 수 있습니까?

미리 감사드립니다.

+1

이미 Quartz 테이블을 수정중인 경우 VARCHAR를 VARCHAR2로 변경할 수도 있습니다. 테이블 스크립트에는 몇 가지 문제점이 있습니다. –

답변

9

LONG 컬럼은 오랫동안 권장되지 않았습니다. 8i 이후, 나는 믿는다. the 11g documentation :

LONG 열이있는 테이블을 만들지 마십시오. 대신 LOB 컬럼 (CLOB, NCLOB, BLOB)을 사용하십시오. LONG 열은 이전 버전 인 호환성에서만 지원됩니다.

테이블에는 LONG 열만 허용되었습니다. 완전히 확신 할 수는 없지만 데이터가 LONG의 다른 열과 함께 저장 되었기 때문에 그 중 하나가 더 많은 것을 관리하기 어렵게 만들 것이라고 생각합니다. LOB는 다르게 저장됩니다. 비교를 위해 표 here을 참조하십시오.


오라클의 LONG 데이터 형식 '2 기가 ​​바이트 가변 길이까지의 문자 데이터'입니다. 숫자 데이터를 저장하는 경우 NUMBER을 사용하십시오.

Java 데이터 유형 (사용자 프로필에서 추측!)을 매핑하는 경우 this table이 유용 할 수 있습니다.

+0

이들 중 어느 것이 오래 사용할 수 있습니까? 그리고 어떻게이 Datatypes에서 긴 가치를 얻을 수 있습니까? – vikiiii

+2

@vikiiii - 이것은 완전한 데이터 유형 불일치 일 수 있습니다. 당신은'C'' long' 같은 데이터 타입을 찾으려고합니까? 숫자입니까? ID와 같이 보이는 열 이름에서 추측하고 있습니다. 오라클의 'LONG'은 완전히 다릅니다 ... –

+0

yes. 내 열은 숫자입니다. 열 대신에'number'를 사용하는 것이 좋은 생각입니까 ?? 또는 내가 사용할 수있는 다른 데이터 유형 – vikiiii

관련 문제