【问题标题】:Table or View does not exist exception within shell表或视图在外壳中不存在异常
【发布时间】:2012-09-17 19:45:03
【问题描述】:

我的 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;
/

和错误:

ERROR:


   select count(*) into cnt from users where upper(full_name) like '%TYLER MACHUTCHON%';
                                      *
ERROR at line 16:
ORA-06550: line 16, column 48:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 16, column 3:
PL/SQL: SQL Statement ignored
ORA-06550: line 18, column 120:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 18, column 3:
PL/SQL: SQL Statement ignored

有什么想法或建议吗?

【问题讨论】:

    标签: exception view plsql block


    【解决方案1】:
      WHEN TABLE_MISSING
          THEN
            NULL;
    

    看起来像一个错误,您应该向调用者提出并让您的流程失败。 “表缺失”不是您想要忽略的错误。

      WHEN OTHERS THEN
             NULL;
    

    又一件非常糟糕的事情要做。除非你的过程没有意义,没有人关心它是否有效。

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

    现在就实际修复而言,如果表在运行时可能存在也可能不存在,您将需要使用动态 sql 来执行所有操作。要检查它是否存在,您可以使用数据字典视图(user_tables、all_tables 或 dba_tables)。

    【讨论】:

    • Rajesh,我已经尝试了你所说的一切,但没有任何效果,但是是的,我没有意识到,我可以先检查数据字典。谢谢
    • 您到底尝试了什么?请编辑您的问题并发布您的代码。
    猜你喜欢
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 2011-09-27
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多