테이블을 떨어 뜨리고 테이블이 존재하지 않으면 오류가 발생합니다.

StackOverflow https://stackoverflow.com/questions/2052697

  •  20-09-2019
  •  | 
  •  

문제

테이블을 떨어 뜨리고 새 테이블을 만들어야합니다. 테이블을 떨어 뜨리고 테이블이 존재하지 않으면 오류가 발생합니다.

테이블이 존재하는지 어떻게 확인할 수 있습니까?

저는 Oracle 11G에서 작업하고 있습니다

미리 감사드립니다.

도움이 되었습니까?

해결책

당신은 다음과 같은 일을 할 수 있습니다 :

DECLARE v_exist PLS_INTEGER;
BEGIN

SELECT COUNT(*) INTO v_exist
FROM user_tables
WHERE table_name = 'YOURTABLEHERE';

IF v_exist = 1 THEN
    EXECUTE IMMEDIATE 'DROP TABLE YOURTABLEHERE';
END IF;

다른 팁

DECLARE
  eTABLE_OR_VIEW_DOES_NOT_EXIST  EXCEPTION;
  PRAGMA EXCEPTION_INIT(eTABLE_OR_VIEW_DOES_NOT_EXIST, -942);
BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE SCHEMA.WHATEVER';
EXCEPTION
  WHEN eTABLE_OR_VIEW_DOES_NOT_EXIST THEN
    NULL;
END;

공유하고 즐기십시오.

같은 것

select count(*) from user_tables 
where table_name= :table name

또는

select count(*) from dba_tables
where owner = :table owner
and table_name = :table name

또는 무거운 대안 :

begin execute immediate 'drop table table_name'; 
exception when others then null; 
end;

나는 이것을 처리하기 위해 다음 절차를 사용하고 있습니다.

create or replace procedure drop_table_if_exists ( p_table_name varchar2 )
is
  it_exist number;
begin
  select count(*) 
     into it_exists
     from user_tables
     where table_name = p_table_name
  ;
  if it_exists >= 1 then
    execute immediate 'drop table '||p_table_name;
  end if;
end;
/

exec drop_table_if_exists ( 'TABLE_TO_DROP' );
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top