powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / EXCEPTION деления на ноль
17 сообщений из 17, страница 1 из 1
EXCEPTION деления на ноль
    #39851309
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! подскажите как в EXCEPTION вывести деление на ноль. Запрос должен отработать, чтобы вывести таблицу.
EXCEPTION срабатывает когда хотя бы одно поле number1=0, numer2 =0
примерный запрос:
DECLARE
ERRORSS EXCEPTION;
BEGIN
IF number1=0 OR number2=0
THEN
ZERO_DIVIDE (-1476, ' Попытка деления на ноль. );
ELSE SELECT ssid, workss, number1/number2 AS aaa
FROM DEPARTMENT ;
END IF;
EXCEPTION WHEN ERRORSS THEN raise_application_error (-1476,'Вы должны увеличить данные ' || number1 || ' и '|| number2');
END;
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851320
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вывести результат клиенту можно и без таких наворотов.

Если же под "вывести" имеется в виду что-то другое, неплохо бы обосновать, зачем нужен именно такой метод.

Код: plsql
1.
2.
with t (n1, n2) as (select 1, 1 from dual union all select 1, 0 from dual)
select decode(n2, 0, '---', n1 / n2) division from t
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851325
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,

это сообщение EXCEPTION нужно для дальнейшей обработки полученных данных. Можно и одно сообщение выводить
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851333
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create or replace function divide(n1 number, n2 number) return number as
begin
  if n2 = 0 then
    raise ZERO_DIVIDE;
  else
    return n1/n2;
  end if;
end;
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851337
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm, это то вроде понятно, а как табличное значение вернуть из селекта?
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851343
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm, ZERO_DIVIDE скорее всего предполагает вывод сообщения на англ. , что делить на 0 нельзя
Наверно мне нужно простое исключение типа
raise_application_error (-20001,'ВЫ ДОЛЖНЫ ИЗМЕНИТЬ ДАННЫЕ');
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851344
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
select ... into return_value from ...



Код: plsql
1.
select function(...) from ...



Сформулируйте задачу четко на русском языке, тогда она легко переведется на язык программирования.
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851347
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятие "вывести" детализируйте - куда вывести?

Вернуть в виде result set, вернуть величину как результат функции, поднять exception?
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851349
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,
SQL DEVELOPER вывести хочу пока
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851351
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm, Запрос должен отработать, чтобы вывести таблицу в SQL DEVELOPER.
EXCEPTION срабатывает когда хотя бы одно поле number1=0, numer2 =0
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851355
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,

DECLARE
number1 NUMBER :=0;
ERRORSS EXCEPTION;
BEGIN
IF number1=0 OR number2=0
THEN
raise raise_application_error;
ELSE return (SELECT CNUM, CIY, SNUM/RATING FROM aacustomers); -- понимаю что так нельзя
END IF;
END;
EXCEPTION WHEN ERRORSS THEN raise_application_error (-20000,'Вы должны увеличить данные ' || SNUM);
END;
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851356
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-- понимаю что так нельзя

Можно и так .

Только зачем забивать микроскопом гвозди?
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851358
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос должен отработать, чтобы вывести таблицу в SQL DEVELOPER.
EXCEPTION срабатывает когда хотя бы одно поле number1=0, numer2 =0

В такой формулировке достаточно:

Код: plsql
1.
select 1/&n1, 1/&n2, 'success' from dual
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851360
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm, мне бы пример для понятия...
в DECLARE наверное должно быть %ROWTYPE;
и pipe row
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851364
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотите pipeline - на здоровье .
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851400
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdmХотите pipeline - на здоровье .Это крайне непрофессионально - хаотично реагировать на сдуру сболтнутые недорослем ключевые слова.
Единственное, что сейчас нужно -
dmdmdmСформулируйте задачу четко на русском языкеА в этом может помочь только http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
EXCEPTION деления на ноль
    #39851402
OlegPushkarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,
спасибо за пример.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / EXCEPTION деления на ноль
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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