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



Я понимаю, что вычисления можно запрятать во внутренний селект, но у меня там и так сложный запрос и лишний уровень городить не хочется. Поэтому такой вариант не предлагать (он и так запасной)) Просто в оракле столько всего, может и такую конструкцию уже придумали, что-то вроде дублирования одного значения в несколько полей таблицы. Я пока ничего такого не нашла. Буду очень признательна, это облегчит запрос.
...
Рейтинг: 0 / 0
Вставка одного значения в несколько полей таблицы
    #39953158
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kate.shest
может и такую конструкцию уже придумали, что-то вроде дублирования одного значения в несколько полей таблицы.
Нет. И да: inline view.
Но можешь вплести даже и триггер.
...
Рейтинг: 0 / 0
Вставка одного значения в несколько полей таблицы
    #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
Вставка одного значения в несколько полей таблицы
    #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
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вставка одного значения в несколько полей таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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