一尘不染

Oracle错误处理

sql

我有这样的代码:

DECLARE
  e_not_exist EXCEPTION;
  PRAGMA EXCEPTION_INIT(e_not_exist, -942);
  car_name VARCHAR2(20);
BEGIN
  select name_of_factory into car_name from car where car_id = 1;
  dbms_output.put_line(car_name);
EXCEPTION
  when e_not_exist then
    dbms_output.put_line('Table or view does not exist');
  when OTHERS then
    dbms_output.put_line(to_char(SQLCODE));
END;

实际上,我的表名是CARS,但不是CAR。但是oracle无法处理此异常,并给我一个错误ORA-00942:表或视图不存在。我该如何处理该异常?


阅读 263

收藏
2021-03-10

共1个答案

一尘不染

您不能使用静态SQL来做到这一点。当代码正在编译而不执行时,将出现错误。尝试以下方法:

 execute immediate 'select name_of_factory from car where car_id = 1' 
                    into car_name ;
2021-03-10