powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сократить код
6 сообщений из 6, страница 1 из 1
Сократить код
    #40029099
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, подскажите как можно улучшить/сократить код:
Есть таблица:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
--- внешний цикл по курсору
if cursor_rec.kod1 is not null then
  insert into t (id, kod1, p1, p2) values (cursor_rec.id, cursor_rec.kod1, cursor_rec.p1, cursor_rec.p2)
end if
if cursor_rec.kod2 is not null then
  insert into t (id, kod2) values (cursor_rec.id, cursor_rec.kod2, null, null)
end if
if cursor_rec.kod3 is not null then
  insert into t (id, kod3) values (cursor_rec.id, cursor_rec.kod3, null, null)
end if



В итоге каждый код вставляется в таблицу строкой.
Можно ли как-то ветвления сократить if ... then ?
...
Рейтинг: 0 / 0
Сократить код
    #40029101
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно.
INSERT ALL.
...
Рейтинг: 0 / 0
Сократить код
    #40029106
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous, спасибо
а если вместо insert использую процедуру в которой update + insert вставляемой записи?
...
Рейтинг: 0 / 0
Сократить код
    #40029108
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диагностика "подземных стуков"(с) - не самая сильная моя сторона.
...
Рейтинг: 0 / 0
Сократить код
    #40029161
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous, может подскажите, почему в столбце не выводится 1,2,3, хотелось бы чтобы там были числа, а не строки code1, code2, code3:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table tab1 
(
  order_id integer,
  code1 integer,
  code2 integer,
  code3 integer,
  code1_note varchar2(20)
);


insert into tab1 (order_id, code1, code2, code3, code1_note) values (1, 10, 20, 30, 'code1 note');
insert into tab1 (order_id, code1, code2, code3, code1_note) values (1, 10, null, null, 'code1 note');
insert into tab1 (order_id, code1, code2, code3, code1_note) values (1, 70, 26, null, 'code1 note');

commit;

select order_id,
       decode(gr, 'code1', 1, 'code2', 2, 'code3', 3) gr,
       code_id,
       code1_note
  from tab1 unpivot(code_id for gr in(code1, code2, code3))
...
Рейтинг: 0 / 0
Сократить код
    #40029216
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Замените для отладки decode(gr, 'code1', 1, 'code2', 2, 'code3', 3) на gr и всё поймёте.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сократить код
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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