Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вставка одного значения в несколько полей таблицы / 4 сообщений из 4, страница 1 из 1
30.04.2020, 07:52
    #39953157
kate.shest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка одного значения в несколько полей таблицы
Здравствуйте всем!
Мне нужно сделать вставку в таблицу, в два поля вставляется одно и то же значение, которое вычисляется достаточно сложно, то есть это выглядит примерно так:
Код: plsql
1.
2.
3.
insert into table (col1, col2)
select  *сложные вычисления*,  *сложные вычисления*
  from .....



Я понимаю, что вычисления можно запрятать во внутренний селект, но у меня там и так сложный запрос и лишний уровень городить не хочется. Поэтому такой вариант не предлагать (он и так запасной)) Просто в оракле столько всего, может и такую конструкцию уже придумали, что-то вроде дублирования одного значения в несколько полей таблицы. Я пока ничего такого не нашла. Буду очень признательна, это облегчит запрос.
...
Рейтинг: 0 / 0
30.04.2020, 07:56
    #39953158
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка одного значения в несколько полей таблицы
kate.shest
может и такую конструкцию уже придумали, что-то вроде дублирования одного значения в несколько полей таблицы.
Нет. И да: inline view.
Но можешь вплести даже и триггер.
...
Рейтинг: 0 / 0
30.04.2020, 11:28
    #39953218
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка одного значения в несколько полей таблицы
kate.shest
лишний уровень городить не хочется.

Код: plsql
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
create table dropme_t(col1 integer, col2 integer);
Table created

merge into dropme_t t
using(select power(2, rownum) v from dual connect by level < 10) s
on (1=2)
when not matched then
  insert (col1, col2)
  values(s.v, s.v)
;
9 rows merged

select * from dropme_t
;
                                   COL1                                    COL2
--------------------------------------- ---------------------------------------
                                      2                                       2
                                      4                                       4
                                      8                                       8
                                     16                                      16
                                     32                                      32
                                     64                                      64
                                    128                                     128
                                    256                                     256
                                    512                                     512
9 rows selected

rollback;
Rollback complete

insert into dropme_t(col1, col2)
with t as (select power(2, rownum) v from dual connect by level < 10)
select v,v from t;
9 rows inserted
select * from dropme_t
;
                                   COL1                                    COL2
--------------------------------------- ---------------------------------------
                                      2                                       2
                                      4                                       4
                                      8                                       8
                                     16                                      16
                                     32                                      32
                                     64                                      64
                                    128                                     128
                                    256                                     256
                                    512                                     512
9 rows selected

rollback;
Rollback complete

begin
  for i in
  (select power(2, rownum) v from dual connect by level < 10
  ) loop
	insert into dropme_t (col1, col2)
	values (i.v, i.v);
  end loop;
end;
/
PL/SQL procedure successfully completed

select * from dropme_t
;
                                   COL1                                    COL2
--------------------------------------- ---------------------------------------
                                      2                                       2
                                      4                                       4
                                      8                                       8
                                     16                                      16
                                     32                                      32
                                     64                                      64
                                    128                                     128
                                    256                                     256
                                    512                                     512
9 rows selected

drop table dropme_t purge;
Table dropped

SQL> 
...
Рейтинг: 0 / 0
30.04.2020, 14:04
    #39953286
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка одного значения в несколько полей таблицы
andrey_anonymous

Код: plsql
1.
2.
3.
4.
5.
insert into dropme_t(col1, col2)
with t as (select power(2, rownum) v from dual connect by level < 10)
select v,v from t;
9 rows inserted
select * from dropme_t




попробовал с вызовом ф-ции with t as (select f(deptno) v from dept ...

без materialize f выполнилась "два раза"

....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вставка одного значения в несколько полей таблицы / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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