Ошибка SQL: ORA-00913: слишком много значений
Две таблицы идентичны в терминах имени таблицы, имен столбцов, типа данных и размера. Эти таблицы расположены в отдельных базах данных, но я использую
current Войти в hr user.
insert into abc.employees select * from employees where employee_id=100;
Я не могу использовать оригинальный запрос из корпоративного офиса.
Error starting at line 1 in command:
insert into abc.employees select * from employees where employee_id=100;
Error at Command Line:1 Column:25
Error report:
SQL Error: ORA-00913: too many values
00913. 00000 - "too many values"
*Cause:
*Action:
Ответы
Ответ 1
Вы должны указать имена столбцов, как показано ниже. Это хорошая практика и, вероятно, решить вашу проблему.
insert into abc.employees (col1,col2)
select col1,col2 from employees where employee_id=100;
ИЗМЕНИТЬ
Как вы сказали, employees
имеет 112 столбцов (sic!), попробуйте выполнить ниже, чтобы сравнить столбцы столбцов
select *
from ALL_TAB_COLUMNS ATC1
left join ALL_TAB_COLUMNS ATC2 on ATC1.COLUMN_NAME = ATC1.COLUMN_NAME
and ATC1.owner = UPPER('2nd owner')
where ATC1.owner = UPPER('abc')
and ATC2.COLUMN_NAME is null
AND ATC1.TABLE_NAME = 'employees'
и вы должны обновить свои таблицы, чтобы иметь одинаковую структуру.
Ответ 2
Если у вас есть 112 столбцов в одной таблице, и вы хотите вставить данные из исходной таблицы, вы можете сделать это как
create table employees as select * from source_employees where employee_id=100;
Или из sqlplus выполните как
copy from source_schema/password insert employees using select * from
source_employees where employee_id=100;
Ответ 3
Сообщение 00947 указывает на то, что в записи, которую вы пытаетесь отправить в Oracle, отсутствует один или несколько столбцов, которые были включены во время создания таблицы.
Сообщение 00913 указывает, что запись, которую вы пытаетесь отправить в Oracle, содержит больше столбцов, чем было включено во время создания таблицы.
Вам просто нужно проверить количество столбцов и их тип в обеих таблицах
т.е. таблицы, которые участвуют в SQL.
Ответ 4
Для меня это прекрасно работает
insert into oehr.employees select * from employees where employee_id=99
Я не уверен, почему вы получаете ошибку. Характер кода ошибки, который вы создали, это столбцы, которые не совпадают.
Один хороший подход - использовать ответ @Parodo, указанный
Ответ 5
это немного поздно.. но я видел, что эта проблема возникает, когда вы хотите вставить или удалить одну строку из/в DB, но u put/pull больше одной строки или более одного значения,
Например:
вы хотите удалить одну строку из БД с определенным значением, таким как идентификатор элемента, но вы запросили список идентификаторов, тогда вы столкнетесь с тем же сообщением об исключении.
С уважением.