Home  >  Article  >  Database  >  Oracle 过程中检查数据表存在与否

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

WBOY
WBOYOriginal
2016-06-07 15:53:26965browse

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

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

使用方法: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;

本文永久更新链接地址

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn