Вопрос:UPDATE TMP_COLUMNS SET COLUMNNAME = (SELECT COLUMN_NAME FROM user_tab_columns usertable WHERE table_name = table_Name AND usertable.column_id = TMP_COLUMNS.idcolumn) WHERE EXISTS (SELECT COLUMN_NAME FROM user_tab_columns usertable WHERE table_name = table_Name AND usertable.column_id = TMP_COLUMNS.idcolumn); COMMIT;
Я получаю сообщение об ошибке ORA-01427: single-row subquery returns more than one row
Лучший ответ:
Как отмечает @mnagel, ошибка возникает, потому что ваш подзапрос (SET COLUMNNAME = SELECT…) возвращает более одной строки.
Проблема, вероятно, здесь:
WHERE table_name = table_Name
Вам нужно сделать что-то вроде этого:
WHERE table_name = tmp_columns.something
Если в tmp_columns столбца с именем tmp_columns, вам нужно указать имя таблицы как константу:
WHERE table_name = ‘something’ Ответ №1
вы делаете:
UPDATE TMP_COLUMNS SET COLUMNNAME = ( *SOMETHING* );
где ЧТО-ТО
SELECT COLUMN_NAME FROM user_tab_columns usertable WHERE table_name = table_Name AND usertable.column_id = TMP_COLUMNS.idcolumn
что что-то возвращает более одной строки, поэтому ваше обновление нарушено, так как ему нужно знать новое значение для обновления (и это должно быть ровно одно значение, а не несколько строк).
запустите только что-нибудь и исправьте его, чтобы вернуть правильное значение.
также: не пишите такие длинные строки;)