ORA-00917 Отсутствует запятая, но она не отсутствует?

Делаю домашнюю работу Oracle DBA и просмотрел несколько сообщений об ошибке 00917, но я просто делаю простую INSERT. Кажется, я не вижу, где мне не хватает запятой или скобки. Любая помощь?

INSERT INTO copy_f_orders 
(ORDER_NUMBER, TO_DATE(ORDER_DATE, 'mm-dd-RRRR'), ORDER_TOTAL, CUST_ID, STAFF_ID)
VALUES (5691, '09-23-2004', 145.98, 225, 12);

person TheDoc    schedule 14.10.2015    source источник


Ответы (3)


Не используйте вызов функции в списке столбцов:

INSERT INTO copy_f_orders(ORDER_NUMBER, ORDER_DATE, ORDER_TOTAL, CUST_ID, STAFF_ID)
VALUES (5691, '09-23-2004', 145.98, 225, 12);

Если вам нужно вызвать его в значениях:

INSERT INTO copy_f_orders(ORDER_NUMBER, ORDER_DATE, ORDER_TOTAL, CUST_ID, STAFF_ID)
VALUES (5691, TO_DATE('09-23-2004', 'mm-dd-RRRR'), 145.98, 225, 12);
person Lukasz Szozda    schedule 14.10.2015
comment
Странно... это прямая копия/вставка из учебных материалов Oracle: Вставка определенных значений даты (продолжение) Точно так же, если мы хотим ВСТАВИТЬ строку с форматом, отличным от формата по умолчанию, для столбца даты, мы должны использовать TO_DATE функция для преобразования значения даты (строки символов) в дату. ВСТАВИТЬ В f_staffs (first_name, TO_DATE(дата рождения, 'Месяц fmDD, RRRR') VALUES ("Сью", "1 июля 1980 года"); - person TheDoc; 14.10.2015
comment
@TheDoc Пожалуйста, дайте ссылку - person Lukasz Szozda; 14.10.2015
comment
@TheDoc Вы имеете в виду онлайн-документацию Oracle? - person Lalit Kumar B; 14.10.2015
comment
Информация об обучении iLearning Oracle Academy. Я прохожу через это прямо сейчас. - person TheDoc; 14.10.2015
comment
@TheDoc Не могли бы вы предоставить скриншот, это очень интересно - person Lukasz Szozda; 14.10.2015
comment
точно, lad2025 (как и @RoyParuchuri ниже). INSERT отлично работает с TO_DATE в предложении VALUES. Спасибо, парни! Все еще сбивает с толку, почему документация, написанная в 2013 году, будет неправильной в синтаксисе... - person TheDoc; 14.10.2015
comment
@TheDoc Мало того, посмотрите, какую цитату они используют , а не ' - person Lukasz Szozda; 14.10.2015
comment
@TheDoc Если вы можете, сообщите им, что у них есть ошибки в примерах. - person Lukasz Szozda; 14.10.2015
comment
@lad2025 Я дам им знать, если разберусь как! Спасибо за вашу помощь - person TheDoc; 14.10.2015

INSERT INTO copy_f_orders 
(ORDER_NUMBER, TO_DATE(ORDER_DATE, 'mm-dd-RRRR'), ORDER_TOTAL, CUST_ID, STAFF_ID)
VALUES (5691, '09-23-2004', 145.98, 225, 12);

Должен быть

INSERT INTO copy_f_orders 
(ORDER_NUMBER, ORDER_DATE, ORDER_TOTAL, CUST_ID, STAFF_ID)
VALUES (5691, TO_DATE('09-23-2004', 'mm-dd-RRRR'), 145.98, 225, 12);

Нет смысла использовать функции TO_DATE для столбцов, надеюсь, это имеет смысл.

person Roy Paruchuri    schedule 14.10.2015
comment
Вам не хватает скобок вокруг списка столбцов, которые будут вставлены во второй запрос. Это будет ошибкой, как есть! - person Boneist; 14.10.2015
comment
Спасибо, @Рой Паручури. Получил тот же ответ выше, но в документации Oracle iLearning Academy ясно сказано: «Аналогично, если мы хотим ВСТАВИТЬ строку с форматом, отличным от формата по умолчанию, для столбца даты, мы должны использовать функцию TO_DATE для преобразования значения даты (строка символов ) на свидание. INSERT INTO f_staffs (first_name, TO_DATE(дата рождения, 'Месяц fmDD, RRRR') VALUES ("Сью", '1 июля 1980'); Тем не менее, я попробовал это с функцией в предложении VALUES, и все работает нормально. Спасибо! - person TheDoc; 14.10.2015
comment
Спасибо за исправление, ребята. Странно видеть, что в документации оракула говорится, что я обновил ваш запрос не по опыту. - person Roy Paruchuri; 14.10.2015
comment
@RoyParuchuri просто к вашему сведению; если вы добавляете код к своим ответам/вопросам, убедитесь, что вы отформатировали его как код, чтобы он отображался в читаемом формате. Чтобы сделать это для кода в блоке, либо убедитесь, что каждая строка начинается с 4 пробелов, либо выделите текст и нажмите кнопку {} на панели инструментов редактора. Если это фрагмент кода, например select..., вы можете использовать обратную кавычку (`) до и после фрагмента, чтобы правильно отформатировать его. Этот последний бит работает даже в комментариях. *{:-) - person Boneist; 14.10.2015
comment
Спасибо @Boneist за ваш отзыв - person Roy Paruchuri; 15.10.2015

person    schedule
comment
добавить реальный текст с ответом - person Bhavin Solanki; 02.12.2015