1. 程式人生 > >Oracle drop表格之前判斷表格是否存在

Oracle drop表格之前判斷表格是否存在

可以用一個帶引數的儲存過程和查詢表格是否存在的語句來實現在drop之前檢查表格是否存在 。下面這條語句用於查詢表格是否存在在某一個使用者下面。如果檢查的表格存在返回1,不存在返回0.

select count(*) from from ALL_TABLES where OWNER=upper('owner_name') and TABLE_NAME=upper('table_name')

下面是儲存過程,如果num的值是1就執行drop語句。

create or replace procedure table_exit(owner in varchar,tablename in varchar, num out number) is
v_sql varchar2(2000);
begin
  v_sql := 'SELECT COUNT(*) FROM ALL_TABLES WHERE OWNER ='||chr(39)||owner||chr(39)||'AND TABLE_NAME ='||''''||tablename||'''';
  execute immediate v_sql into num;
  if num = 1 then
    execute immediate 'drop table '||owner||'.'||tablename;
    dbms_output.put_line('drop table '||owner||'.'||tablename);
  end if;
end table_exit;

在建立表格之前呼叫該儲存函式即可: 

declare
tablename varchar(20);
owner varchar(20);
n number;
begin
  t:= upper('table');
  o:= upper('temp');
  table_exit(owner, tablename,n);
end;