У меня есть файл SQL, который имеет следующее statments:Ошибка сценария в Oracle SQL
BEGIN
if (&&masterKey = 1) then
shutdown immediate;
startup restrict;
end if;
END;
/
В другом файле SQL (defineVariables.sql) Я объявленный переменная MasterKey.
DEFINE masterKey = 0;
и импортирован, что SQL здесь, используя
@defineVariables.sql
В то время как я выполнить сценарий, я получаю следующее сообщение об ошибке. Я не уверен, что это потому, что я использую инструкцию shutdown? Может кто-нибудь, пожалуйста, помогите мне с этим вопросом?
Сообщение об ошибке:
SQL> BEGIN
2 if (&&masterKey = 1) then
3 shutdown immediate;
4 startup restrict;
5 end if;
6 END;
7/
old 2: if (&&masterKey = 1) then
new 2: if (0 = 1) then
shutdown immediate;
*
ERROR at line 3:
ORA-06550: line 3, column 10:
PLS-00103: Encountered the symbol "IMMEDIATE" when expecting one of the
following:
:= . (@ % ;
ORA-06550: line 5, column 1:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
begin function pragma procedure subtype type <an identifier>
<a double-quoted delimited-identifier> current cursor delete
exists prior
выключение немедленным не является командой PLSQL. Это команда sqlplus. – Rene
Я не думаю, что вы можете использовать как shutdown, так и startup в одном блоке plsql. Из вашего кода, как только выполнение будет немедленно завершено, вся БД будет закрыта. Заявления после этого не выполняются вообще. – XING
@XING У меня не было проблем с запуском скрипта без блока BEGIN и END и без условия if. Поэтому, возможно, проблема заключается в том, что Рене указал неверный синтаксис. Но есть ли способ выбрать эти статусы на основе флага? – pna