powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Непонятки с исключениями
5 сообщений из 5, страница 1 из 1
Непонятки с исключениями
    #34662614
Helmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, подскажите плз почему Java себя так ведет.

Есть ф-ция возвращающая строку и в качестве параметра принимающая номер служащего

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE OR REPLACE FUNCTION get_fio2 (empno_in IN emp.empno%TYPE)
    RETURN  emp.ename%TYPE
IS
   --no_valid_fio   EXCEPTION;
   --PRAGMA EXCEPTION_INIT (no_valid_fio, - 20090 );
   fio_out   emp.ename%TYPE;
BEGIN
   SELECT NVL (ename, 'ggg')
     INTO fio_out
     FROM emp
    WHERE empno = empno_in;

    IF  fio_out = '0'
   THEN
      raise_application_error (- 20060 , 'Ф.И.О. недоступно!');
   -- RETURN   0 ;
    ELSE 
       RETURN  fio_out;
   END  IF ;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
       raise_application_error (- 20090 , 'Ф.И.О. недоступно!');
END;
/


Вот кусок кода клиента на Java вызывающий эту функцию

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Statement st = cn.createStatement();
String sql = "{? = call get_fio2(?)}";
        CallableStatement cst = cn.prepareCall(sql);
        cst.setInt( 2 , 778 );
        cst.registerOutParameter( 1 ,Types.VARCHAR);
        cst.execute();
        System.out.println("Результат запроса: "+cst.getString( 1 ));


Непонятки возникают если задать номер клиента которого нету!
Результат таков:
java.sql.SQLException: ORA-20090: Ф.И.О. недоступно!

Однако по логике должно быть

java.sql.SQLException: ORA-20060: Ф.И.О. недоступно!


Есть кто в теме почему так? подозрения что функция NVL просто игнорируется!
...
Рейтинг: 0 / 0
Непонятки с исключениями
    #34662616
Helmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон небольшие исправления

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE OR REPLACE FUNCTION get_fio2 (empno_in IN emp.empno%TYPE)
    RETURN  emp.ename%TYPE
IS
   --no_valid_fio   EXCEPTION;
   --PRAGMA EXCEPTION_INIT (no_valid_fio, - 20090 );
   fio_out   emp.ename%TYPE;
BEGIN
   SELECT NVL (ename, '0')
     INTO fio_out
     FROM emp
    WHERE empno = empno_in;

    IF  fio_out = '0'
   THEN
      raise_application_error (- 20060 , 'Ф.И.О. недоступно!');
   -- RETURN   0 ;
    ELSE 
       RETURN  fio_out;
   END  IF ;
EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
       raise_application_error (- 20090 , 'Ф.И.О. недоступно!');
END;
/


Что за цеке это ?
...
Рейтинг: 0 / 0
Непонятки с исключениями
    #34662651
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исключение орасл вам правильное кидает, ибо записей нету и NVL побоку. Курите доку и будет вам щастье.
...
Рейтинг: 0 / 0
Непонятки с исключениями
    #34662773
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, строка IF fio_out = '0' тоже настораживает... интересно с какого перепоя в символьной колонке будет строка '0'
...
Рейтинг: 0 / 0
Непонятки с исключениями
    #34663638
Helmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу ты точно! Уже переутомление! Всем спасыбо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Непонятки с исключениями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]