Search code examples
sqloracleplsqlora-00942

Oracle errors handling


I have such code:

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;

Actually, my table name is CARS but not CAR. But oracle doesn't handle this exception and gives me an error ORA-00942: Table or view doesn't exist. How can I handle this exception?


Solution

  • You can't do that with static SQL. The error is coming when the code is being compiled, not executed. Try this instead:

     execute immediate 'select name_of_factory from car where car_id = 1' 
                        into car_name ;