Exception shell中不存在表或视图异常

Exception shell中不存在表或视图异常,exception,view,plsql,block,Exception,View,Plsql,Block,在我的shell脚本中存在pl/sql块的此问题。这是剧本 PL/SQL块: $ORACLE_HOME/bin/sqlplus -s system/${SysPwd}@${SList} <<! --WHENEVER SQLERROR EXIT FAILURE; SET SERVEROUTPUT ON SIZE UNLIMITED; SET FEEDBACK OFF; SET DEFINE OFF; spool ${RESULT} append DECLARE TABL

在我的shell脚本中存在pl/sql块的此问题。这是剧本 PL/SQL块:

$ORACLE_HOME/bin/sqlplus -s system/${SysPwd}@${SList} <<!
--WHENEVER SQLERROR EXIT FAILURE;
  SET SERVEROUTPUT ON SIZE UNLIMITED;
  SET FEEDBACK OFF;
  SET DEFINE OFF;
  spool ${RESULT} append
DECLARE
TABLE_MISSING EXCEPTION;
  PRAGMA EXCEPTION_INIT(TABLE_MISSING,-6550);
    err_num NUMBER;
    err_msg VARCHAR2(100);
    cnt number;
    sql_stmt varchar2(2000);
    v_user varchar2(100) := '${User}';
    p_username varchar2(100);
    p_fullname varchar2(100);
    p_account_state char(2);

BEGIN
  select count(*) into cnt from users where upper(full_name) like '%${PaceUser}%';
  if cnt <> 0 then
  select rtrim(username),rtrim(full_name),account_state into p_username,p_fullname,p_account_state from users where upper(full_name) like '%${User}';
   dbms_output.put_line('User ${User} exist in the database ${SList}.....');
  end if;
EXCEPTION
  when NO_DATA_FOUND then
  NULL;
  WHEN TABLE_MISSING
      THEN
        NULL;
  WHEN OTHERS THEN
         NULL;
END;
/
有什么想法或建议吗

  WHEN TABLE_MISSING
      THEN
        NULL;
看起来像是一个错误,您应该向调用者提出该错误并使进程失败。“缺少表”不是您希望忽略的错误

  WHEN OTHERS THEN
         NULL;
另一件非常糟糕的事情是,除非你的过程没有意义,也没有人关心它是否有效

=================================================================================


至于实际的修复,如果表在运行时可能存在,也可能不存在,那么您需要使用动态sql来执行所有操作。要检查它是否存在,您可以使用数据字典视图(用户表、所有表或dba表)。

Rajesh,我已经尝试了您所说的一切,但没有任何效果,但是的,我没有意识到,我可以先签入数据字典。谢谢你到底试了什么?请编辑您的问题并发布代码。
  WHEN OTHERS THEN
         NULL;