1

I have a PL/SQL procedure where I call

RAISE_APPLICATION_ERROR (-20001, 'Illegal id');

if something goes bad.

This seems to work, because the procedure quits and throws the error when it should.

I call this procedure using

simpleJdbcCall.execute(myargs)

But when I catch the exception, it is of type DataAccessException. The cause is ORA-01403: no data found

There doesn't seem to be a way for me to get the number or message from my RAISE_APPLICATION_ERROR call. How can I get these values?

Somaiah Kumbera
  • 7,063
  • 4
  • 43
  • 44

1 Answers1

1

We do this same thing in our application; however, ORA-20001 exceptions should come to Spring as UncategorizedSQLException. If you are seeing ORA-01403 then I suspect perhaps your procedure is failing in a different way: are you sure Spring is handing in the same arguments you are unit testing with?

What if you make your PL/SQL procedure do nothing other than raise a ORA-20001, do you still get ORA-01403 from Spring? Are you sure you are unit testing your PL/SQL and attaching your Java application to the same database?

Kevin Seymour
  • 766
  • 9
  • 25