直接删除,没有必要查找,如果要找: select 1 from all_tables where table_name='TABLE_NAME';与ms sql server不一样
drop表时如果发生例外,表示没有该表,在异常中处理,既事后处理。
declare num number; str varchar2(50); begin select 1 into num from table_name; str:='drop table table_name'; execute immediate str; exception when others then dbms_output.put_line('不存在该表'); end; /
select count(*) into v_count from all_tables where table_name='TABLE_NAME';
通过系统表查找 select * from user_tables where table_name='YOUR TABLENAME' 判断recordcount是否大于0 注意 YOUR TABLENAME必须大写
create or replace procedure droptable( tablename varchar2) as v_str varchar2(200); v_findtable number(10); begin select count(*) into v_findtable from user_tables where table_name=upper(tablename); if v_findtable=1 then v_str := 'drop table '||tablename; EXECUTE IMMEDIATE v_str; end if; end; /exec droptable('你要删除的表名');
select 1 from all_tables where table_name='TABLE_NAME';与ms sql server不一样
num number;
str varchar2(50);
begin
select 1 into num from table_name;
str:='drop table table_name';
execute immediate str;
exception
when others then
dbms_output.put_line('不存在该表');
end;
/
select * from user_tables where table_name='YOUR TABLENAME'
判断recordcount是否大于0
注意 YOUR TABLENAME必须大写
as
v_str varchar2(200);
v_findtable number(10);
begin
select count(*) into v_findtable from user_tables
where table_name=upper(tablename);
if v_findtable=1 then
v_str := 'drop table '||tablename;
EXECUTE IMMEDIATE v_str;
end if;
end;
/exec droptable('你要删除的表名');