Отсутствует ключевое слово Oracle

Обновлено: 21.11.2024

код:
(СЛУЧАЙ
КОГДА (EOQ) – ((СЛУЧАЙ ps.payment_schedule_date
Когда '00000000'
затем TO_DATE(To_NUMBER(pl.pledge_year_of_giving + 5)| |'0630′,'ГГГГ/ММ/ДД')
Еще TO_DATE(ps.payment_schedule_date,'ГГГГ/ММ/ДД')
конец)) to_char(730) THEN '2 – 3 года Просрочено'
КОНЕЦ)

Все ответы

Пояснения

от ratface · около 10 лет, 10 месяцев назад

Не приходит в голову

от robo_dev · около 10 лет, 10 месяцев назад

вставили ли вы правильное количество скобок?

Помните, что оператор case останавливается на первом истинном операторе.

Я бы тоже выбрал скобки

Тони Хопкинсон · около 10 лет, 10 месяцев назад

Там же, где и Рободев.
Если у вас есть два перед внутренним корпусом и два после его конца, избыточные или неправильные…
Возможно, вы захотите взглянуть на некоторые функции для этого, они будут намного более читабельными и, следовательно, удобными в сопровождении.
/p>

Начать или найти

Связанные обсуждения

Какой курс подходит для автора контента со знаниями в области ИТ

от seoexpertmini · около 2 месяцев назад

Высоко востребованные ИТ-навыки

от faisal892 · около 2 месяцев назад

Какие должности в сфере ИТ человек, скорее всего, выполнял бы до того, как стал бы ISSO?

от davemoody · около 2 месяцев, 1 неделю назад

Возможно ли это для меня?

от throwaway9511 · около 3 месяцев, 1 неделю назад

Должен ли я изучать разработку приложений для Android в 2022 году?

от vermavikas0451 · около 3 месяцев, 2 недель назад

Похожие форумы

    · 20 044 обсуждения · 288 обсуждений · 110 обсуждений · 1 обсуждение · 317 обсуждений

Премиум TechRepublic

Как нанять архитектора Интернета вещей

Чтобы нанять архитектора IoT с правильным сочетанием технических знаний и опыта, потребуется комплексный процесс проверки. Этот комплект для найма от TechRepublic Premium включает в себя описание вакансии, примеры вопросов для собеседования и базовое объявление о поиске, которое вы можете настроить для своего бизнеса, чтобы найти, провести собеседование, нанять и нанять лучших кандидатов на должность .

Опубликовано: 24 марта 2022 г., 17:00 по тихоокеанскому времени. Изменено: 26 марта 2022 г., 8:00 по тихоокеанскому времени.

Как нанять финтех-инженера

Этот набор для найма от TechRepublic Premium содержит описание работы, примеры вопросов для собеседования и основное объявление о поиске, которое поможет вам найти, провести собеседование, нанять и нанять лучших кандидатов на открытую вакансию FinTech Engineer. Из предисловия к комплекту для найма: За последнее десятилетие или около того, особенно после повсеместного распространения смартфонов в домене .

Опубликовано: 17 марта 2022 г., 17:00 по тихоокеанскому времени. Изменено: 23 марта 2022 г., 20:00 по тихоокеанскому времени.

Комплект для найма: Дизайнер виртуальной реальности

Этот набор для найма от TechRepublic Premium содержит описание работы, примеры вопросов для собеседования и базовое объявление о поиске, которое поможет вам найти, провести собеседование, нанять и нанять лучших кандидатов на открытую вакансию дизайнера виртуальной реальности. Из предисловия к набору для найма: хотя концепция приложений виртуальной и дополненной реальности существует уже несколько десятилетий, .

Опубликовано: 10 марта 2022 г., 16:00 по тихоокеанскому времени. Изменено: 12 марта 2022 г., 12:00 по тихоокеанскому стандартному времени.

Контрольный список: развертывание приложений и служб Microsoft 365 на компьютерах Mac

Очень важно правильно спланировать развертывание приложений и служб Microsoft 365 на компьютерах Mac, чтобы не раздражать конечных пользователей. Необходимо учитывать так много элементов, что дальновидным ИТ-специалистам следует рассмотреть возможность использования контрольного списка. При правильном администрировании ИТ-отделы могут гарантировать, что важные задачи не будут упущены из виду, а пользователям не придется возвращать системы в службу поддержки.

Опубликовано: 23 февраля 2022 г., 16:00 по тихоокеанскому времени. Изменено: 24 февраля 2022 г., 21:00 по тихоокеанскому стандартному времени. Подробнее Подробнее Подробнее TechRepublic Premium

Ошибка ORA-00905, вероятно, довольно часто встречается при программировании в Oracle. К счастью, ее гораздо проще устранить, чем некоторые другие ошибки ORA, с которыми вы столкнетесь при работе в Oracle.

В Oracle есть определенные слова, которые имеют особое значение в рамках программы: зарезервированные слова и ключевые слова. (Пространства имен — это еще один тип слов, имеющих особое значение в Oracle, но не связанных с обсуждением ORA-00905.) Зарезервированные слова — это слова, которые нельзя переопределить и, следовательно, их нельзя использовать для определения объектов базы данных, таких как столбцы или столы. Эти слова предопределены Oracle и всегда будут иметь соответствующие значения, пока они используются.

Ключевые слова — это слова, которые также имеют особое значение для Oracle, но не являются зарезервированными словами и поэтому могут быть переопределены. Однако некоторые ключевые слова могут впоследствии стать зарезервированными ключевыми словами, и поэтому их следует использовать с осторожностью при выполнении в качестве имен переменных или функций. Здесь вы найдете список ключевых слов.

Проблема

Ошибка ORA-00905 возникает, когда отсутствует обязательное ключевое слово. Сообщение об ошибке будет выглядеть так:

ORA-00905: отсутствует ключевое слово

Как следует из сообщения, в вашем коде отсутствует ключевое слово, которое должно быть для успешного выполнения запроса.

Решение

Согласно документации Oracle, для устранения этой ошибки необходимо «исправить синтаксис». Разрешение ORA-00905 включает в себя выяснение того, какое ключевое слово отсутствует и куда его вставить. Возьмем следующий пример:

INTO_отдел_Резервная копия

ОТ отдела

В этом примере пользователь выбирает все переменные в списке «отдел» в резервный список. Однако выполнение этого запроса вызовет ошибку ORA-00905. В нем отсутствует ключевое слово INSERT.

ВСТАВИТЬ В BACKUP_отдела

(ВЫБРАТЬ * ОТ отдела)

Вот еще один пример PL/SQL, в котором пользователь пытается создать новую таблицу и скопировать данные инвентаризации в эту новую таблицу:

INTO inventory_may2009

ИЗ ресурсов;

Этот запрос не будет работать, поскольку ключевое слово SELECT * INTO не соответствует синтаксису PL/SQL. Правильный способ написать этот запрос и избавиться от сообщения об ошибке — написать его следующим образом:

ВСТАВИТЬ В inventory_may2009

ИЗ ресурсов;

Заглядывая вперед

Лучший способ избежать появления ORA-00905 в будущем — знать ключевые слова Oracle, а также правильный синтаксис Oracle. Вы должны быть знакомы с общими ключевыми словами и зарезервированными словами и обращаться к официальной документации Oracle для справки. Если вы не можете решить проблему ORA-00905, подумайте о том, чтобы обратиться за помощью к системному администратору базы данных. В противном случае лучше всего обратиться к консультанту Oracle, который может устранить ошибку, а также выполнить другие требования, которые могут у вас возникнуть. Не забудьте дважды проверить учетные данные, опыт и уровни сертификации специалиста, чтобы убедиться, что он соответствует вашим требованиям Oracle.

Ошибка ORA-00905: отсутствует ключевое слово, когда синтаксический анализатор Oracle ожидает ключевое слово в запросе sql, но оно отсутствует. Ошибка отображается, чтобы указать на неправильно сформированный оператор, в котором анализатор Oracle указывает, что ключевое слово отсутствует в операторе. Следует пересмотреть синтаксис и формат оператора SQL. Если какие-либо ключевые слова отсутствуют в SQL-запросе, их следует добавить, чтобы устранить ошибку ORA-00905: отсутствует ключевое слово.

Инструкция sql должна быть написана с правильным синтаксисом и структурой. Если в операторе SQL отсутствует ключевое слово, будет отображаться сообщение об ошибке ORA-00905: отсутствует ключевое слово. Причиной может быть неправильное использование оператора SQL или синтаксис, который Oracle не поддерживает. Анализатор Oracle ожидает зарезервированное ключевое слово, которого нет в SQL-запросе. Ключевое слово должно быть определено и включено в оператор SQL.

При возникновении этой ошибки ORA-00905

Если выполняется неверный оператор SQL или если оператор SQL содержит синтаксис, который не поддерживается Oracle, будет отображаться сообщение об ошибке ORA-00905: отсутствует ключевое слово. Oracle может разрешать операторы SQL в форматах, отличных от стандартных. При написании инструкции sql необходимо соблюдать стандарты Oracle.

Основная причина

Перед выполнением инструкции SQL Oracle анализирует ее. Синтаксический анализатор Oracle предвидит наличие зарезервированного ключевого слова в операторе SQL. Oracle не смог дальше интерпретировать оператор SQL и, следовательно, не смог его выполнить. Чтобы устранить проблему ORA-00905: отсутствующее ключевое слово, необходимо добавить отсутствующее ключевое слово в оператор SQL.

Решение 1

Если оператор SQL написан в формате, который не принимается Oracle, его следует изменить, чтобы он соответствовал стандартам Oracle. Oracle мог использовать другой формат. Оператор SQL должен быть подготовлен в формате, ожидаемом синтаксическим анализатором Oracle. Чтобы устранить эту проблему, ORA-00905: отсутствует ключевое слово, необходимо исправить формат инструкции SQL.

Проблема

Решение А

Решение Б

Решение 2

Если вы запустите инструкцию SQL, содержащую код PL/SQL, в Oracle эта инструкция SQL завершится ошибкой. Перед запуском оператора SQL следует удалить код PL/SQL. В качестве альтернативы запрос SQL должен выполняться в блоке операторов PL/SQL. Внутри блока POL/SQL синтаксический анализатор Oracle может анализировать оператор sql.

Всякий раз, когда у вас есть вопрос, опубликуйте небольшой пример данных (инструкции CREATE TABLE и INSERT, только соответствующие столбцы) для всех задействованных таблиц и точные результаты, которые вы хотите получить от этих данных, чтобы люди, которые хотят помочь вы можете воссоздать проблему и проверить их идеи.

Объясните на конкретных примерах, как вы получаете эти результаты из этих данных.

См. FAQ форума:

«Отсутствующее ключевое слово» может возникать со всеми видами синтаксических ошибок, а не только с отсутствующими ключевыми словами.

В этом случае ошибка связана с условием, а не с выражением после THEN в выражении CASE. Посмотрите, как работают выражения CASE: THEN и ELSE должны сопровождаться одним значением в некотором типе данных SQL; например,

является значением (очевидно, с типом данных NUMBER), но

нет, так как в SQL нет типа данных BOOLEAN.

Возможно, вы пытаетесь сделать что-то вроде этого:

В этом конкретном примере может быть эффективнее иметь три отдельных запроса и запускать один из них в зависимости от значения p_type или даже использовать динамический SQL.

Ответы

Всякий раз, когда у вас есть вопрос, опубликуйте небольшой пример данных (инструкции CREATE TABLE и INSERT, только соответствующие столбцы) для всех задействованных таблиц и точные результаты, которые вы хотите получить от этих данных, чтобы люди, которые хотят помочь вы можете воссоздать проблему и проверить их идеи.

Объясните на конкретных примерах, как вы получаете эти результаты из этих данных.

См. FAQ форума:

«Отсутствующее ключевое слово» может возникать со всеми видами синтаксических ошибок, а не только с отсутствующими ключевыми словами.

В этом случае ошибка связана с условием, а не с выражением после THEN в выражении CASE. Посмотрите, как работают выражения CASE: THEN и ELSE должны сопровождаться одним значением в некотором типе данных SQL; например,

является значением (очевидно, с типом данных NUMBER), но

нет, так как в SQL нет типа данных BOOLEAN.

Возможно, вы пытаетесь сделать что-то вроде этого:

В этом конкретном примере может быть эффективнее иметь три отдельных запроса и запускать один из них в зависимости от значения p_type или даже использовать динамический SQL.

Привет и привет всем. Я новичок в разработке Oracle SQL и работаю над своими навыками запросов, решая проблемы на HackerRank. Я застрял с этой проблемой. Как видно, есть две разные таблицы: Студенты и Оценки. Первый имеет столбцы; ID, Name и Marks, в то время как второй имеет такие столбцы, как Grade, Min_Marks и Max_Marks (которые обозначают граничные условия для присвоения оценок, включая два конца).

Теперь я должен создать отчет с именами учащихся (Students.Name), полученными ими оценками (Grades.Grade) и их оценками (Students.Marks), чтобы они были указаны в порядке их оценки, начиная с лучших (10) и заканчивая худшими (то есть 3, я полагаю!) И для учеников с одинаковыми оценками я упорядочиваю их в алфавитном порядке. Другое условие заключается в том, что для учащихся с оценкой ниже 8 их имена должны быть заменены на NULL, а если есть учащиеся с одинаковыми оценками в диапазоне от 1 до 7, я должен упорядочить их по их оценкам в порядке возрастания.

Это код, который я написал для выполнения этого запроса:

КОГДА Grades.Grade >=8, ТО Студенты.Имя

, Оценки.Оценка, Учащиеся.Оценки ОТ Учащихся ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ Оценки НА Учащихся.Оценки МЕЖДУ оценками.Мин.оценка И оценки.Макс.оценка ORDER BY

КОГДА 'NULL' THEN Оценки.Оценка DESC, Студенты.Оценки

ELSE Оценки.Оценка DESC, Студенты.Имя

Я получаю сообщение об ошибке: ORA-00905 Отсутствуют ключевые слова, которые относятся к оператору WHEN 'NULL' THEN Grades.Grade DESC, Student.Marks. Я пробовал и другие способы, я просто добавлю эти коды. Пожалуйста, объясните мне, почему возникает эта ошибка и как ее смягчить?

Заранее спасибо!

Пробная версия 1

КОГДА Grades.Grade >=8, ТО Студенты.Имя

, Оценки.Оценка, Учащиеся.Оценки ОТ Учащихся ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ Оценки НА Учащихся.Оценки МЕЖДУ оценками.Мин.оценка И оценки.Макс.оценка ORDER BY

КОГДА Студенты.Имя = 'NULL' ТО Оценки.Оценка DESC, Студенты.Оценки

КОГДА Студенты.Имя != 'NULL' ТО Оценки.Оценка DESC, Студенты.Имя

Пробная версия 2

КОГДА Grades.Grade >=8, ТО Студенты.Имя

, Оценки.Оценка, Учащиеся.Оценки ОТ Учащихся ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ Оценки НА Учащихся.Оценки МЕЖДУ оценками.Мин.оценка И оценки.Макс.оценка ORDER BY

КОГДА Студенты.Имя = 'NULL' ТО Оценки.Оценка DESC, Студенты.Оценки

WHEN Student.Name <> 'NULL' THEN Grades.Grade DESC, Student.Name

Пробная версия 3

КОГДА Grades.Grade >=8, ТО Студенты.Имя

, Оценки.Оценка, Студенты.Оценки ОТ Учащихся ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ Оценки НА Учащихся.Оценки МЕЖДУ оценками.Мин.оценка И оценки.Max_Mark ORDER BY

Читайте также: