Использование разделителя ";" в инсталляционных скриптах БД Oracle

Всем привет!
В документации написано, что для объединения нескольких SQL-запросов в одну транзакцию в инсталляционных скриптах нужно использовать между запросами резделитель “;” вместо “^”. Но я в этом случае получаю ошибку ORA-00911: неверный символ. Если заменить “;” на “^”, то скрипт успешно отрабатывает. В качестве СУБД использую Oracle 11g

1 симпатия

Где такое сказано?
Вроде как раз наоборот - если выполнять скрипты через встроенный механизм исполнения скриптов то команды разбиваются им на транзакции по разделителю “^” .

А если запросы нужно объединить в одну транзакцию, то получается наоборот. Как раз то, что я написал :grinning:
Цитата:

Это означает, что при необходимости можно сгруппировать несколько простых операторов (например, insert ), разделенных точкой с запятой, и обеспечить их выполнение в одной транзакции.

1 симпатия

А при возникновении ошибки, скрипт выполняется механизмом Cuba или вы его в SQLplus выполняете?
Это я к тому, что символ “^” используется механизмом Cuba для группировки по транзакциям.
При выполнении скрипта механизмом Cuba отлично выполняется скрипт с любым из этих разделителей и на MS SQL, и на Postgres. Именно Oracle проверить не на чем.

Скрипт выполняется механизмом CUBA.
Из своего опыта могу сказать, что если при работе с Oracle в JDBC в метод Statement::execute передать запрос с “;” в конце, то как раз получим подобную ошибку. Т.е. перед выполнением его нужно удалять. Не уверен на 100%, но, возможно, в этом дело.
Эта проблема для меня не критична, буду использовать “^”.