Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вставка  [new]
Дикий_TT
Guest
Есть таблица в ней есть строки которые нужно в нее же вставить только с обновлением по одному столбцу....как это можно реализовать?. без вспомогательных таблиц...
8 май 08, 11:47    [5640966]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
Гришка Отрепьев
Member [заблокирован]

Откуда: Чудова монастыря недостойный монах
Сообщений: 17
Дикий_TT
Есть таблица в ней есть строки которые нужно в нее же вставить только с обновлением по одному столбцу....как это можно реализовать?. без вспомогательных таблиц...


INSERT INTO t SELECT <то, что нужно> FROM t WHERE ...
8 май 08, 11:49    [5640989]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
INSERT INTO
SELECT ...
8 май 08, 11:49    [5640993]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
Дикий_TT
Guest
Спасибо большое, а как можно update к этим запросам присовокупить
8 май 08, 11:56    [5641073]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
UPDATE (SELECT ...) SET ...
8 май 08, 11:57    [5641079]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Дикий_TT
Спасибо большое, а как можно update к этим запросам присовокупить
Бесцельно?

Возможно Вы про merge?
8 май 08, 11:57    [5641086]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
DServ
Member

Откуда: Jelgava
Сообщений: 61
BEGIN

for rec in

(SELECT a.table_name, a.column_name

FROM sys.all_tab_cols a

where a.column_name = 'RECID'and a.table_name in(

SELECT a.table_name

FROM sys.all_tab_cols a

where a.column_name = 'DATAAREAID'

)
) loop

dbms_output.put_line(rec.table_name);

insert into ATEST2 select RECID, DATAAREAID from rec.table_name;

/*begin
execute immediate 'insert into '||AXADMIN.ATEST2||' select RECID, DATAAREAID from '||rec.table_name||;
end;*/

end loop;
END;

dbms_output.put_line работает,
а insert into не могу настроить. Я в синтаксисе ошибся, или в корне не прав, и где искать?
14 май 08, 12:51    [5661026]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
Proteus
Member

Откуда:
Сообщений: 1348
DServ
BEGIN

for rec in

(SELECT a.table_name, a.column_name

FROM sys.all_tab_cols a

where a.column_name = 'RECID'and a.table_name in(

SELECT a.table_name

FROM sys.all_tab_cols a

where a.column_name = 'DATAAREAID'

)
) loop

dbms_output.put_line(rec.table_name);

[b]insert into ATEST2 select RECID, DATAAREAID from rec.table_name;[/b]

/*begin
    execute immediate 'insert into '||AXADMIN.ATEST2||' select RECID, DATAAREAID from '||rec.table_name||;
end;*/

end loop;
END;
dbms_output.put_line работает,
а insert into не могу настроить. Я в синтаксисе ошибся, или в корне не прав, и где искать?


попробуй так. на то что ты написал смотреть больно.
BEGIN
  FOR rec IN (SELECT a.table_name
                FROM sys.all_tab_cols a
               WHERE a.column_name IN ('RECID', 'DATAAREAID')
               GROUP BY a.table_name
               HAVING COUNT(*) = 2) LOOP
    dbms_output.put_line(rec.table_name);
     execute immediate 'insert into '||AXADMIN.ATEST2||' select RECID, DATAAREAID from '||rec.table_name;
  END LOOP;
END;
14 май 08, 13:19    [5661322]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
DServ
Member

Откуда: Jelgava
Сообщений: 61
/* CREATE TABLE AXADMIN.ATEST3
(
Rmy NUMBER (10, 0),
Dmy VARCHAR2 (3)
)
*/

BEGIN
FOR rec IN (SELECT a.table_name
FROM sys.all_tab_cols a
WHERE a.column_name IN ('RECID', 'DATAAREAID')
GROUP BY a.table_name
HAVING COUNT(*) = 2) LOOP
dbms_output.put_line(rec.table_name);
execute immediate 'insert into '||AXADMIN.ATEST3||' select RECID, DATAAREAID from '||rec.table_name;
END LOOP;
END;

сообщение об ошибке:

execute immediate 'insert into '||AXADMIN.ATEST3||' select RECID, DATAAREAID from '||rec.table_name;
*
ORA-06550: line 8, column 48:
PLS-00357: Table,View Or Sequence reference 'AXADMIN.ATEST3' not allowed in this context
ORA-06550: line 8, column 6:
PL/SQL: Statement ignored
*** Script stopped due to error ***
14 май 08, 14:08    [5661724]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
DServ
     execute immediate 'insert into AXADMIN.ATEST3 select RECID, DATAAREAID 
Пользуйтесь тегом SRC при оформлении.
14 май 08, 14:18    [5661798]     Ответить | Цитировать Сообщить модератору
 Re: Вставка  [new]
DServ
Member

Откуда: Jelgava
Сообщений: 61
тег [SRC oracle] заметил, когда уже отправил текст, а как редактировать свой пост не нашел.

спасибо. все сработало.
14 май 08, 15:11    [5662247]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить