Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Скопировать строку таблицы  [new]
leprechaun
Member

Откуда:
Сообщений: 153
Извиняюсь за примитивный вопрос, голова не варит. Как просто скопировать строку

insert into RA_CUSTOMER_TRX_LINES_ALL (select * from RA_CUSTOMER_TRX_LINES_ALL where customer_trx_line_id = '584237157')

но ключ customer_trx_line_id надо изменить на customer_trx_line_id.nextval, остальное продублировать. Не перечислять же все поля?
4 июл 16, 18:35    [19368283]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать строку таблицы  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
leprechaun
Извиняюсь за примитивный вопрос, голова не варит. Как просто скопировать строку

insert into RA_CUSTOMER_TRX_LINES_ALL (select * from RA_CUSTOMER_TRX_LINES_ALL where customer_trx_line_id = '584237157')

но ключ customer_trx_line_id надо изменить на customer_trx_line_id.nextval, остальное продублировать. Не перечислять же все поля?

разумеется, таки, перечислять :)

ну ещё триггер можно сделать строчный на инсерт, который
для = инсерта проигнорирует ваш (прочитанный в селекте идюк) и дёрнет сиквенс
4 июл 16, 18:55    [19368351]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать строку таблицы  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
leprechaun,

..или похожие танцы на любом процедурном языке (на том же pl/sql см примеры про %rowtype)
4 июл 16, 19:03    [19368378]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать строку таблицы  [new]
leprechaun
Member

Откуда:
Сообщений: 153
Спасибо, ну вот конкретно простой пример. Считываю строку в запись. Далее какие-то из полей меняю. И хочу эту запись сделать новой строкой таблицы.

DECLARE

L_REC ra_customer_trx_all%ROWTYPE;

CURSOR C1 IS
SELECT * FROM ra_customer_trx_all WHERE customer_trx_id = '114819088';

BEGIN

OPEN C1;
FETCH C1 INTO L_REC;
CLOSE C1;

L_REC.DOC_SEQUENCE_VALUE := 7;

--INSERT into ra_customer_trx_all L_REC;

END;

Как это правильно оформить, не перечислять же L_REC.* - все 200 столбцов таблицы.
4 июл 16, 23:51    [19368947]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать строку таблицы  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10042
leprechaun
Как это правильно оформить, не перечислять же L_REC.* - все 200 столбцов таблицы.


INSERT into ra_customer_trx_all VALUES L_REC;


SY.
5 июл 16, 01:53    [19369075]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать строку таблицы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
[/quote]Inserting Records into Tables
+ Да и выборку можно немного попроще
tst> create table t1 as select * from all_objects;

Table created.

tst> select count(*) from t1;

  COUNT(*)
----------
      6462

tst> declare t1_rec t1%rowtype;
  2  begin select * into t1_rec from t1 where rownum=1;
  3        t1_rec.object_id:=-t1_rec.object_id;
  4        insert into t1 values t1_rec;
  5  end;
  6  /

PL/SQL procedure successfully completed.

tst> select count(*) from t1;

  COUNT(*)
----------
      6463
5 июл 16, 02:07    [19369078]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать строку таблицы  [new]
день потерять
Guest
leprechaun
Не перечислять же все поля?
Столько букв на форуме, потому что лень скопипастить поля таблицы в sql-ide? И это для конкретного значения, замечу - неуникального, customer_trx_line_id.
5 июл 16, 07:50    [19369195]     Ответить | Цитировать Сообщить модератору
 Re: Скопировать строку таблицы  [new]
leprechaun
Member

Откуда:
Сообщений: 153
Спасибо, вроде то что надо.

Я что-то с этими составными типами, записями и таблицами PL/SQL совсем тугой, уже не раз перечитывал всё равно путаюсь.
Только записанные примеры выручают.
5 июл 16, 09:42    [19369499]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить