Si je laisse tomber une table et que la table n'existe pas, j'obtiens une erreur
Question
J'ai besoin de laisser tomber une table et d'en faire une nouvelle. Si je laisse tomber la table et que la table n'existe pas, j'obtiens une erreur
Comment puis-je vérifier si le tableau existe?
Je travaille sur Oracle 11g
Merci d'avance.
La solution
Vous pourriez faire quelque chose comme ça:
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;
Autres conseils
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;
Partagez et profitez.
quelque chose comme
select count(*) from user_tables
where table_name= :table name
ou
select count(*) from dba_tables
where owner = :table owner
and table_name = :table name
ou une alternative lourde:
begin execute immediate 'drop table table_name';
exception when others then null;
end;
J'ai utilisé la procédure suivante pour m'occuper de ceci:
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' );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow