Oracle drop表格之前判斷表格是否存在
阿新 • • 發佈:2018-11-09
可以用一個帶引數的儲存過程和查詢表格是否存在的語句來實現在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;