表或视图在外壳中不存在异常
Posted
技术标签:
【中文标题】表或视图在外壳中不存在异常【英文标题】: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
有什么想法或建议吗?
【问题讨论】:
【参考方案1】: WHEN TABLE_MISSING
THEN
NULL;
看起来像一个错误,您应该向调用者提出并让您的流程失败。 “表缺失”不是您想要忽略的错误。
WHEN OTHERS THEN
NULL;
又一件非常糟糕的事情要做。除非你的过程没有意义,没有人关心它是否有效。
================================================ ====================================
现在就实际修复而言,如果表在运行时可能存在也可能不存在,您将需要使用动态 sql 来执行所有操作。要检查它是否存在,您可以使用数据字典视图(user_tables、all_tables 或 dba_tables)。
【讨论】:
Rajesh,我已经尝试了你所说的一切,但没有任何效果,但是是的,我没有意识到,我可以先检查数据字典。谢谢 您到底尝试了什么?请编辑您的问题并发布您的代码。以上是关于表或视图在外壳中不存在异常的主要内容,如果未能解决你的问题,请参考以下文章
异常 ORA-00942: 表或视图不存在 - 使用休眠会话插入现有表时
SQLSTATE [42S02]:未找到基表或视图:1146表'softwareproject.o_r_f_o_l_s'在laravel中不存在错误
BatchUpdateException:ORA-00942:表或视图不存在
未找到基表或视图:1146 表“epharmacy.medicines”不存在
渲染期间引发的异常:RelativeLayout 中不存在循环依赖项 异常详细信息记录在“窗口”>“显示视图”>“错误日志”中