Wenn ich eine Tabelle fallen lasse und die Tabelle nicht vorhanden ist, bekomme ich einen Fehler

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

  •  20-09-2019
  •  | 
  •  

Frage

Ich muss einen Tisch fallen lassen und einen neuen machen. Wenn ich die Tabelle fallen lasse und die Tabelle nicht vorhanden ist, bekomme ich einen Fehler

Wie kann ich überprüfen, ob die Tabelle vorhanden ist?

Ich arbeite an Oracle 11g

Danke im Voraus.

War es hilfreich?

Lösung

Sie könnten so etwas tun:

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;

Andere Tipps

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;

Teile und genieße.

etwas wie

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

oder

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

oder eine hartnäckige Alternative:

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

Ich habe das folgende Verfahren verwendet, um mich darum zu kümmern:

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' );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top