在过程中,尤其是每天执行的任务,通常要检查查询的数据表存在不存在,如果不存在则等待一段时间在进行执行,以下代码实现了这个功能,如果表不存在,抛出异常,交给异常处理代码,确保数据完整性使用方法: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;更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址