Как я могу проверить мой синтаксис PL / SQL - PullRequest
1 голос
/ 17 мая 2010

Извините, мой английский плохой. Я надеюсь, что вы можете получить то, что я хочу.

У меня есть много * .sql файлов, которые я хочу написать для их компиляции и сообщить мне, если есть какие-либо проблемы (проблемы или ошибки).

Один из моих друзей пишет IDE для java, насколько я помню, он использует javac для генерации кодов ошибок. С другой стороны, я видел, как интегрированные среды разработки Visual Studio или Netbean автоматически сообщали об ошибках. Так что теперь я хочу знать, есть ли у кого-нибудь идеи, как это можно сделать с помощью файлов sql?

Другими словами, я хочу написать редактор для файлов SQL (PL / SQL), который компилирует мой код и сообщает мне, в чем заключается моя ошибка.

Эта проблема возникает, когда я пытаюсь собрать их все в SQL PLUS, это так скучно.

Пожалуйста, помогите мне ...

Ответы [ 2 ]

4 голосов
/ 17 мая 2010

Файл .sql может содержать много разных вещей - DDL, SQL-запросы, анонимные блоки DML, PL / SQL, а также CREATE команды для представлений и хранимых процедур / функций / пакетов.

Вам необходимо знать, что находится в этих файлах .sql. Если вы просто запускаете их вслепую в SQL * Plus, вы не знаете, что они могут делать - я могу дать вам набор сценариев .sql в моей домашней папке, и вы обнаружите, что ваша база данных будет в довольно плохом состоянии. укажите, если вы просто запустили их случайным образом - некоторые сценарии создают / изменяют / удаляют таблицы или удаляют или изменяют данные, некоторые сценарии фиксируют свои изменения (поэтому выдача ROLLBACK после запуска сценария вам не поможет), другие сценарии запускают или останавливают база данных:)

Если вы знаете, что все ваши скрипты .sql содержат только команды CREATE для представлений или хранимых процедур, функций и / или пакетов, вы можете просто запустить их все из командной строки SQL * Plus - вы можете сгенерировать скрипт довольно легко, что запускает их все один за другим - тогда проверьте USER_OBJECTS / ALL_OBJECTS / DBA_OBJECTS для чего-либо, где STATUS = 'INVALID' и запрос USER_ERRORS для любых ошибок компилятора. Помните, однако, что даже этот подход разрушителен , поскольку он перезапишет любые существующие хранимые процедуры и т. Д., Которые были в базе данных, в которой вы их выполняете.

0 голосов
/ 17 мая 2010

SQL * Plus можно запустить из командной строки. Поэтому вы можете использовать его так же, как ваш друг использует javac.

> sqlplus username/password@connection_identifier @scriptToExecute.sql

Помните, что ваши действия могут иметь последствия, поэтому вы захотите реализовать откат для SQL и, возможно, временное именование для команд ddl / dml.

Или, альтернативно, загрузите бесплатный Oracle SQL Developer инструмент Oracle, который уже делает все это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...