2013-03-15 3 views
9

데이터베이스에 현재 존재하지 않는 경우에만 테이블을 생성하기 위해 올바른 구문을 가리킬 수 있습니까?오라클 테이블이 존재하지 않는다면 생성하십시오.

현재 Oracle에 연결하고 데이터베이스에서 명령문을 실행하기 위해 Java GUI를 프로그래밍하고 있으며 Java 제약 조건 또는 SQLPlus 제약 조건으로 구현할 것인지 궁금합니다.

+0

존재하지 않는 테이블을 만들면 실패합니다. 그 실패를 잡을 수 있습니다. 'USER_OBJECTS' 또는'USER_TABLES'에서 해당 테이블 이름을 가진 레코드를 선택하고 결과를 검사 할 수도 있습니다. – Marc

+0

당신은 자바 코드 – Biswajit

답변

7

일반적으로 런타임에 개체를 만들어서는 안되며 응용 프로그램은 설치시 생성 된 개체를 알아야하기 때문에 테이블이 있는지 여부를 확인하는 것이 중요하지 않습니다. 이것이 설치의 일부인 경우 프로세스의 어느 시점에 어떤 객체가 있는지 알아야하므로 테이블이 이미 있는지 여부를 확인할 필요가 없습니다.

당신이 정말로, 그러나,

  • 당신은 테이블을 만들려고하고 'ORA-00955를 잡을 수해야하는 경우. 이름이 이미 기존 개체에서 사용하는 "예외를
  • 당신은 조회 할 수 있습니다 USER_TABLES 또는 ALL_TABLES 또는 DBA_TABLES 다른 사용자가 소유 한 개체를 만들지 여부와 데이터베이스의 권한에 따라 달라질 수 있습니다.
  • 테이블을 만들기 전에 삭제하려고 시도 할 수 있습니다. `ORA-00942 : 테이블 또는 뷰가 존재하지 않습니다. 'excep 만약 그렇지 않다면
+0

에서 그것을 할 수 있습니다! 우리의 프로젝트 가이드 라인은 다소 뒤죽박죽이어서 데이터베이스와 함께 작동하는 프로그램의 일반적인 내용을 원했습니다. – raphnguyen

+0

임시 테이블은 어떻습니까? –

+1

@JawadLeWywadi - 차이가 없습니다. 임시 테이블은 영구 개체이므로 영구 테이블을 만드는 것과 동시에 같은 방법으로 테이블을 만듭니다. 오라클에는 런타임에 생성 및 삭제되는 로컬 임시 테이블이 없습니다. –

1

는 다음과 같은 절차로이 작업을 수행 할 수 있습니다 -이 당신을 도울 수

BEGIN 
    BEGIN 
     EXECUTE IMMEDIATE 'DROP TABLE <<Your Table Name>>'; 
    EXCEPTION 
     WHEN OTHERS THEN 
       IF SQLCODE != -942 THEN 
        RAISE; 
       END IF; 
    END; 

    EXECUTE IMMEDIATE '<<Your table creation Statement>>'; 

END; 

희망.

+1

그럴 때마다 테이블이 삭제 된 것처럼 보입니다. 존재하지 않는다면 어떤 절차가 만들어 지겠지만 그것을한다면 혼자 남겨 둘 것인가? – Archie

0
try 
{ 
    // insert query for insert new record in your table 
} 
catch(Exception Ex) 
{ 
    //if it throw exception then catch it 

    int s=Ex.getErrorCode(); // check it for 903 error 

    //903 is table not existing error in oracle11g 

// then create your new table here otherwise if table present then record get stored in database 
} 
1

@Archie 귀하의 질문에 답변하고 싶습니다. @Piyas De 귀하의 코드를 훔쳐서 죄송합니다 :).

@Piyas De answer의 업데이트가 조금 있습니다.

BEGIN 
    BEGIN 
     EXECUTE IMMEDIATE '<<Your table creation Statement>>'; 
    EXCEPTION 
     WHEN OTHERS THEN 
      IF SQLCODE == -955 THEN 
       RAISE; 
      END IF; 
    END; 
END; 
관련 문제