Wenn ich eine Tabelle fallen lasse und die Tabelle nicht vorhanden ist, bekomme ich einen Fehler
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.
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