Heim  >  Artikel  >  Datenbank  >  Oracle 过程中检查数据表存在与否

Oracle 过程中检查数据表存在与否

WBOY
WBOYOriginal
2016-06-07 15:53:26924Durchsuche

在过程中,尤其是每天执行的任务,通常要检查查询的数据表存在不存在,如果不存在则等待一段时间在进行执行,以下代码实现了这个

在过程中,尤其是每天执行的任务,通常要检查查询的数据表存在不存在,如果不存在则等待一段时间在进行执行,以下代码实现了这个功能,如果表不存在,抛出异常,交给异常处理代码,,确保数据完整性

使用方法:p_CheckTable('UserName.TableName')用户名不存在,则在所有表中查找

create or replace procedure p_CheckTable(p_TableName in varchar2)  as
v_count number;
v_TableName varchar2(200);
v_table varchar2(200);
v_owner varchar2(100);
begin
 v_TableName:=upper(p_TableName);
 v_count:=instr(v_TableName,'.',1,1);
--取owner
 v_owner:=substr(v_TableName,1,v_count-1);
 --dbms_output.put_line(v_owner);

--get table name 
 v_table:=substr(v_TableName,v_count+1,length(v_TableName)-v_count);
 --dbms_output.put_line(v_table);
 
 --if not use other user table ,the owner string is null,then check all tables
 if v_owner is null then
  select count(*) into v_count from all_tables a where a.TABLE_NAME=v_table;
 else
  select count(*) into v_count from all_tables a where a.TABLE_NAME=v_table and  owner=v_owner;
 end if;
 if v_count=0 then
  raise_application_error(-20010,p_TableName||' is not exist,Please wait..');
 end if;
 
end p_CheckTable;

本文永久更新链接地址

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn