У меня есть две равные таблицы Oracle, которые имеют одинаковые имена столбцов.Вставьте данные в таблицу из таблицы anothe в Oracle
1) DoctorProfile_New
2) DoctorProfile_Old
Обе таблицы разделяют ту же структуру следующим образом.
DOCREGNO NOT NULL VARCHAR2(10)
DOCCATOGARY NOT NULL VARCHAR2(10)
ANAME1 VARCHAR2(50)
ANAME2 VARCHAR2(50)
ANAME3 VARCHAR2(50)
ANAME4 VARCHAR2(50)
ANAME5 VARCHAR2(50)
ANAME6 VARCHAR2(50)
ANAME7 VARCHAR2(50)
ANAME8 VARCHAR2(50)
ANAME9 VARCHAR2(50)
AGENDER VARCHAR2(2)
ARESCTOWN VARCHAR2(100)
DOCRCODE NUMBER
Что мне нужно сделать, это вставить все данные из таблицы DoctorProfile_Old в DoctorProfile_New. Единственная разница для столбца DOCREGNO
, мне нужно вставить новое твердое кодированное значение.
insert into DoctorProfile_New
(
DOCREGNO,
DOCCATOGARY,
ANAME1,
ANAME2,
ANAME3,
ANAME4,
ANAME5,
ANAME6,
ANAME7,
ANAME8,
ANAME9,
AGENDER,
ARESCTOWN
)
values
('000081',
(
select
DOCCATOGARY,
ANAME1,
ANAME2,
ANAME3,
ANAME4,
ANAME5,
ANAME6,
ANAME7,
ANAME8,
ANAME9,
AGENDER,
ARESCTOWN
from DoctorProfile_Old WHERE DOCREGNO='T07004'
)
)
Я попытался выше запрос и он всегда дает ошибку Oracle ORA-00947: not enough values
Чтобы достичь этого, вам необходимо написать процедуру PL/SQL. – learningloop
@learningloop - Зачем вам нужен pl/sql? Это просто синтаксическая ошибка с выбранной частью инструкции insert. – booyaa
@booyaa Я не думаю, что DOCREGNO должен принять фиксированное число. Таким образом, до количества строк в «DoctorProfile_Old» нужна логика для автоматизации генерации, если пользователь не хочет вводить ее вручную. – learningloop