Отсутствует правая скобка, ошибка оракула
Обновлено: 21.11.2024
ORA-00907: ошибка отсутствия правой скобки возникает, когда левая скобка используется без правой скобки, чтобы закрыть ее в операторах SQL, таких как создание таблицы, вставка, выбор, подзапрос и предложение IN. Отсутствует правая скобка. Все скобки должны использоваться парами. Операторы SQL, включающие несколько элементов, должны заключаться в круглые скобки. Ошибка ORA-00907: будет выброшена отсутствующая правая скобка, если левая скобка использовалась в операторе SQL, но правая скобка отсутствует.
Коллекция элементов Oracle обозначается скобками. Если правая скобка отсутствует, Oracle не сможет распознать элементы, указанные после нее. Будет показано сообщение об ошибке ORA-00907: отсутствует правая скобка. Правая скобка указывает на закрытие списка элементов. Oracle не мог распознать конец списка элементов, если отсутствовала правая скобка. Все левые скобки в Oracle SQL должны быть соединены с правыми скобками. Вы получите сообщение об ошибке ORA-00907: отсутствует правая скобка, если левых скобок больше, чем правых.
При возникновении ошибки ORA-00906
Коллекция элементов не могла быть предоставлена, если в операторе SQL отсутствовала правая скобка, такая как создание таблицы, вставка таблицы, выбор подзапроса и предложение IN. Создайте запрос SQL, который должен включать набор элементов, но не включает правильную круглую скобку. В этом случае будет отображаться сообщение об ошибке. Ошибка будет устранена, если правильная скобка будет добавлена перед набором элементов
Проблема
Ошибка
Основная причина
В Oracle набор элементов определяется с помощью заключенных в скобки скобок. Oracle не мог определить закрытие списка элементов коллекции, если отсутствовала правая скобка. Oracle предвидит правильную круглую скобку после списка. Oracle выдаст ошибку, если правая скобка отсутствует.
Решение 1
Если скобки в ожидаемом операторе SQL отсутствуют, будет выдана ошибка. Отсутствует правая скобка для указания коллекции элементов. Ошибка будет исправлена, если вы добавите отсутствующие правые скобки.
Проблема
Решение
Решение 2
Необходимо указать тип данных столбца, а также размер или точность типа данных. Ошибка будет выдана, если размер типа данных указан в определении столбца без правой скобки. Oracle будет искать размер, заключая значение в круглые скобки. Сообщение об ошибке будет отображаться, если правая скобка отсутствует сразу после размера типа данных.
Проблема
Решение
Решение 3
Подзапросы добавляются с заключенными скобками в предложении where. Если в подзапросе отсутствует правая скобка, будет показано сообщение об ошибке.
Проблема
Решение
Решение 4
Значения в предложении IN. заключено в скобки. Если правая скобка отсутствует, закрытие списка не может быть идентифицировано. Появится сообщение об ошибке.
Проблема
Решение
Решение 5
Все левые скобки в Oracle SQL должны сочетаться с правыми скобками. Вы увидите эту ошибку ORA-00907: отсутствует правая скобка, если левых скобок больше, чем правых скобок.
Ошибка ORA-00907 является синтаксической ошибкой и, следовательно, часто встречается у пользователей, которые пишут код вручную. Эта ошибка указывает на то, что есть левая скобка, но нет соответствующей правой скобки, или что в скобках содержится дополнительная информация.
Чтобы исправить эту ошибку, вы должны найти часть кода, содержащую отсутствующую правую скобку, вставить отсутствующий символ в нужное место и снова запустить оператор.
Ошибка ORA-00907 обычно может возникать в таких командах, как CREATE TABLE, CREATE CLUSTER и INSERT, которые требуют подробного списка, заключенного в круглые скобки. Это также может происходить в подзапросах, таких как предложения WHERE, инструкции UPDATE table SET column = (SELECT…).
В следующем примере отсутствие правой скобки после «20» вызовет ошибку ORA-00907:
СОЗДАТЬ ТАБЛИЦУ сотрудника
employee_name VARCHAR(20 NOT NULL,
employee_phone VARCHAR(10) NOT NULL,
Эта ошибка также часто возникает в случаях неправильного использования кавычек. Если вы используете одинарные кавычки во фразах, заключенных в другие одинарные кавычки, вы должны добавить еще одну одинарную кавычку с помощью внутренней одинарной кавычки. Другими словами, вы не можете использовать вместе 4 одинарных кавычки (‘___’___’___’).Он должен быть записан как «___»___»___».
Например, в следующих строках кода отсутствует необходимое количество кавычек:
in_fieldname_list := «ПРОТОТИП», «ADDR1», «ГОРОД», «ШТАТ», «ZIP», «ОЦЕНКА»;
in_fieldname_list := ‘ ‘ ‘ПРОТОТИП’ ’, ‘ ‘ADDR1’ ’, ‘ ‘ГОРОД’ ’ ’, ‘ ’ШТАТ’ ’ ’,’ ’ZIP’ ’ ’, ‘’ОЦЕНКА’ ‘ ’;
Ошибка ORA-00907 конкретно указывает на отсутствие правой скобки, а ошибка ORA-00906 указывает на отсутствие левой скобки.
Чтобы избежать ошибки ORA-00907, потренируйтесь писать правильный синтаксис. Один из самых простых способов убедиться в правильности синтаксиса — использовать интегрированную среду разработки, включающую редактор исходного кода. Хороший редактор исходного кода должен предлагать такие функции, как подсветка синтаксиса, автозаполнение, отступы и сопоставление квадратных скобок, чтобы помочь программисту автоматизировать процесс кодирования и облегчить обнаружение ошибок. С такими функциями вы сможете легко определить любую строку кода, которая вызывает ошибку ORA-00907. Если после просмотра синтаксиса эта ошибка по-прежнему возникает, убедитесь, что она не вызвана соединениями FULL/LEFT OUTER, связанными с ошибкой 4433936. Хотя ошибка была исправлена в более поздних версиях Oracle, ее все еще можно увидеть в более ранних версиях.< /p>
Причина: была введена левая скобка без закрывающей правой скобки, или в скобках содержалась дополнительная информация. Все скобки должны быть введены парами.
Действие: исправьте синтаксис и повторите оператор.
Oracle предлагает информацию об ORA-00907 в сочетании с соединениями FULL/LEFT OUTER в связи с ошибкой 4433936. Эта ошибка, вызывающая ORA-00907, была исправлена в 10.2.0.3 и будущих версиях 11g, ее все еще можно увидеть в 9.2.0.5, 9.2.0.7, 9.2.0.8, 10.1.0.5 и 10.2.0.2 на большинстве универсальных платформ.
Симптомами ORA-00907 и ошибки 4433936 являются простые синтаксические ошибки, возникающие при синтаксическом анализе запросов, связанных с соединениями FULL/LEFT OUTER. Вы можете обойти ORA-00907, попробовав операторы соединения Oracle переписать запросы, а не соединения ANSI.
Если вы используете одинарные кавычки во фразах, заключенных в другие одинарные кавычки, вы должны добавить еще одну одинарную кавычку рядом с внутренними одинарными кавычками, чтобы избежать ошибки ORA-00907. Например, вы должны использовать '___''___''___' вместо '___'___'___', чтобы ORA-00907 не выбрасывался из-за синтаксиса.
Вот пример значения даты с одинарными кавычками и строки формата, заключенной в двойные кавычки:
Бурлесон — американская команда
Примечание. Эта документация по Oracle была создана в качестве справочника по поддержке и обучению Oracle для использования нашими специалистами-консультантами по настройке производительности администраторов баз данных. Не стесняйтесь задавать вопросы на нашем форуме Oracle.
Проверьте опыт! Любой, кто рассматривает возможность использования услуг эксперта службы поддержки Oracle, должен самостоятельно проверить свои полномочия и опыт, а не полагаться на рекламу и самопровозглашенный опыт. Все законные эксперты Oracle публикуют свои квалификации Oracle.
Ошибки? Технология Oracle меняется, и мы стараемся обновлять нашу информацию о поддержке BC Oracle. Если вы обнаружите ошибку или у вас есть предложение по улучшению нашего контента, мы будем признательны за ваш отзыв. Просто электронная почта:
и укажите URL-адрес страницы.
Burleson Consulting
Оракул поддержки баз данных
Вы получили сообщение об ошибке ORA-00907: отсутствует правая скобка? Узнайте, что вызвало это и как решить эту проблему, в этой статье.
ORA-00907 Причина
При работе с Oracle SQL все левые круглые скобки (символ «(») должны сочетаться с правыми скобками (символ «)»).
Если левых скобок больше, чем правых, вы получите эту ошибку.
Это также может быть вызвано синтаксическими ошибками в операторе CREATE TABLE.
Решение ORA-00907
Есть несколько способов устранить эту ошибку.
Решение 1. Проверьте пары скобок
Первое решение — проверить правильность количества скобок.
Если вы используете интегрированную среду разработки, например SQL Developer, вы можете поместить курсор рядом с каждой скобкой, чтобы увидеть, где находится соответствующая скобка. Если в нужном месте, отлично. Если совпадение появляется где-то неожиданно, значит, вы пропустили скобку.
Это часто может происходить, если вы используете вложенные функции.
Решение 2. Проверьте оператор CREATE TABLE
Если вы получаете ошибку ORA-00907 при выполнении инструкции CREATE TABLE, это может быть связано с неправильной ссылкой на внешний ключ.
Это происходит потому, что нам не нужны слова FOREIGN KEY при определении встроенного внешнего ключа (как здесь).
- Удалите слова FOREIGN KEY
- Объявить внешний ключ нестандартным (рекомендуется)
Если вы хотите и дальше использовать встроенное объявление, удалите слова FOREIGN KEY
Проблема с этим подходом заключается в том, что вы не знаете имя внешнего ключа, что может усложнить обслуживание.
Лучше объявить внешний ключ в другой строке и дать ему конкретное имя.
Таким образом, вы можете использовать fk_order_customer в качестве имени ограничения и легко его увидеть и сослаться на него.
Полное руководство по использованию оператора CREATE TABLE, включая синтаксис для Oracle, можно найти здесь.
Убедитесь, что ваш оператор CREATE TABLE соответствует этому синтаксису, и у вас не должно возникнуть никаких проблем.
Итак, вот как вы решаете ошибку ORA-00907: отсутствует правая скобка.
Наконец, если вам понравилась информация и советы по карьере, которые я предоставляю, подпишитесь на мою рассылку ниже, чтобы быть в курсе моих статей. Вы также получите фантастический бонус. Спасибо!
Читайте также: