Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Непонятки с исключениями / 5 сообщений из 5, страница 1 из 1
16.07.2007, 23:09:06
    #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
16.07.2007, 23:11:45
    #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
16.07.2007, 23:54:05
    #34662651
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с исключениями
Исключение орасл вам правильное кидает, ибо записей нету и NVL побоку. Курите доку и будет вам щастье.
...
Рейтинг: 0 / 0
17.07.2007, 07:12:30
    #34662773
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с исключениями
кстати, строка IF fio_out = '0' тоже настораживает... интересно с какого перепоя в символьной колонке будет строка '0'
...
Рейтинг: 0 / 0
17.07.2007, 12:28:24
    #34663638
Helmer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с исключениями
Тьфу ты точно! Уже переутомление! Всем спасыбо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Непонятки с исключениями / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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