Вопрос:
Когда я запускаю следующую задачу .cmd:
sqlplus -s User/Password@database @Query.sql ‘G:’
Я получаю эту ошибку:
SP2-0734: unknown command beginnin
Даже добавление set sqlblanklines on не удалось.
С помощью простого запроса, такого как select * from table1, он работает.
С более сложным запросом (несколько join, group by) он не работает = > Даже если файл хорошо сгенерирован. Внутри файла я просто обнаруживаю ошибки.
Подробнее о проблеме вы найдете ниже:
SP2-0734: unknown command beginning «FROM NOTI….» — rest of line ignored. SP2-0734: unknown command beginning «INNER JOIN…» — rest of line ignored. SP2-0734: unknown command beginning «INNER JOIN…» — rest of line ignored. SP2-0734: unknown command beginning «INNER JOIN…» — rest of line ignored. SP2-0044: For a list of known commands enter HELP and to leave enter EXIT. SP2-0734: unknown command beginning «INNER JOIN…» — rest of line ignored. SP2-0734: unknown command beginning «INNER JOIN…» — rest of line ignored. SP2-0734: unknown command beginning «INNER JOIN…» — rest of line ignored. SP2-0734: unknown command beginning «INNER JOIN…» — rest of line ignored. SP2-0044: For a list of known commands enter HELP and to leave enter EXIT. SP2-0734: unknown command beginning «LEFT JOIN …» — rest of line ignored. SP2-0734: unknown command beginning «LEFT join …» — rest of line ignored. SP2-0734: unknown command beginning «LEFT join …» — rest of line ignored. SP2-0734: unknown command beginning «LEFT JOIN …» — rest of line ignored. SP2-0044: For a list of known commands enter HELP and to leave enter EXIT. SP2-0734: unknown command beginning «LEFT join …» — rest of line ignored. SP2-0734: unknown command beginning «LEFT join …» — rest of line ignored. SP2-0734: unknown command beginning «WHERE NOTI…» — rest of line ignored. SP2-0734: unknown command beginning «GROUP BY N…» — rest of line ignored. SP2-0044: For a list of known commands enter HELP and to leave enter EXIT. SP2-0734: unknown command beginning «,table1…» — rest of line ignored. SP2-0734: unknown command beginning «,table2…» — rest of line ignored. Ответ №1
По умолчанию SQL * Plus обрабатывает пустую строку как завершение предыдущей команды:
Пустая строка в инструкции SQL или script сообщает SQL * Plus, что вы закончили ввод команды, но не хотите ее запускать.
Первая пустая строка перед FROM завершает SELECT – но она не выполняется, поскольку последняя строка не имеет точки с запятой в конце, и у вас нет / на следующем линия. Этот частичный SELECT хранится в буфере операторов, но никогда не выполняется.
SQL * Plus затем пытается интерпретировать остальную часть файла, но поскольку каждая последующая строка не начинается с чего-то, что она распознает как SQL и не является командой SQL * Plus, вы получаете SP2-0044 для всех их.
Вы можете удалить пустые строки в середине инструкции; или выпустите SET SQLBLANKLINES ON в начале вашего script:
Управляет ли SQL * Plus пустые строки в команде SQL или script. ON интерпретирует пустые строки и новые строки как часть команды SQL или script. OFF, значение по умолчанию не позволяет пустые строки или новые строки в команде SQL или script или script.
Ответ №2
У меня такая же проблема, даже я попробовал SET SQLBLANKLINES ON, но не повезло. Я, наконец, понял, что проблема связана с форматом кодирования файлов. Фактически я использовал, чтобы сохранить свой sql файл, используя визуальную студию, которая сохраняет файл в формате кодирования utf-8.
solution – открыть файл sql в блокноте → сохранить как формат кодировки ANSI. он работает.
Ответ №3
SET SQLBLANKLINES ON не работал в моем случае, когда я использую сценарий cmd для запуска и сохранения результатов sqlplus в виде txt файла.
Как только я добавил пустую строку между строкой комментария “PROMPT” и первой строкой моего оператора select, ошибка исчезла. Раньше моя строка оператора select находилась сразу под строкой PROMPT и вырабатывала SP2-0734.