Вставить несколько строк с несколькими значениями nextval Oracle SQL

Я пытаюсь вставить 2 строки с несколькими значениями и test_id.nextval в существующий фрейм данных без включения заголовков столбцов в код:

insert into x
    select * from
        (select 12345, 'text', test_id_seq.nextval from dual
    union all
        select 23589, 'other text', test_id_seq.nextval from dual);

Получил ошибку: sequence number not allowed here. Поэтому я удалил порядковый номер. Затем произошла ошибка not enough values. Как я могу вставить несколько строк в существующую таблицу с идентификаторами nextval?


person yPennylane    schedule 27.04.2017    source источник


Ответы (1)


Попробуй это:

    insert into x
    select tt.* , test_id_seq.nextval from
    (select 12345, 'text' from dual
    union all
    select 23589, 'other text' from dual) tt;
person Oto Shavadze    schedule 27.04.2017
comment
Сначала ваш код работал, но после того, как я добавил другие значения, он больше не работал. insert into a_glw select tt.*, work_id_seq.nextval from (select 11111, 'text', 'text', 'text', NULL, 'text', 'text', 'text', '?', 'text' from dual union all select 11111, 'text', 'text', 'text', NULL, 'text', NULL, NULL, '?', 'text' from dual) tt; выдает ошибку 00918. 00000 - "column ambiguously defined, относящуюся к первой строке. - person yPennylane; 02.05.2017
comment
@yPennylane - попробуйте установить псевдонимы для столбцов, например: insert into a_glw select tt.*, work_id_seq.nextval from (select 11111 col1, 'text' col2, 'text' col3, 'text' col4, NULL col5, 'text' col6, 'text' col7, 'text' col8, '?' col9, 'text' col10 from dual union all select 11111, 'text', 'text', 'text', NULL, 'text', NULL, NULL, '?', 'text' from dual) tt - person Oto Shavadze; 02.05.2017
comment
Я обнаружил, что мне не разрешено помещать один и тот же текст в 2 столбца одного оператора выбора. Не понимаю почему. - person yPennylane; 02.05.2017
comment
это не работает. Теперь возникает ошибка 01722. 00000 - "invalid number". - person yPennylane; 02.05.2017
comment
Итак, какое было бы решение? - person yPennylane; 02.05.2017
comment
"invalid number", похоже, a_glw проблема типов столбцов таблицы - person Oto Shavadze; 02.05.2017
comment
но это работает, когда все значения одного оператора select различны. Затем вставляются 2 строки. - person yPennylane; 02.05.2017
comment
похоже, что у вас числовой тип столбца и вы пытаетесь вставить нечисловое значение внутрь. Вы уверены, что не делаете этого? - person Oto Shavadze; 02.05.2017
comment
Первый, третий и последний столбцы имеют числовой формат, а остальные - varchar2 (4000 байт). Ошибка возникает, когда я меняю столбец varchar2 с text на ?, в то время как в первом операторе выбора есть другой ?. Я знаю, что помещаю текст в столбец числового формата, но ошибка появляется только тогда, когда я меняю с text на ?. - person yPennylane; 02.05.2017
comment
Думаю, лучше было бы задать другой вопрос, в котором вам будет предоставлена ​​структура таблицы и пример оператора insert. - person Oto Shavadze; 02.05.2017
comment
Я разместил этот вопрос здесь: stackoverflow.com/questions/43743968/ - person yPennylane; 02.05.2017