У меня есть файл со следующим сценарием:
BEGIN
...
a bunch of inserts
...
COMMIT;
EXCEPTION
WHEN OTHERS THEN ROLLBACK;
END;
Когда я выполняю это в sqlplus, я получаю следующее:
SQL> @file.sql
382
Это - как будто он не заканчивает блок. Я плохо знаком с использованием pl/sql и sqlplus, таким образом, я не знаю, делаю ли я что-то не так.
Какие-либо идеи?
Вам нужно добавить еще одну строку после последнего END; вот так:
/
Просто косая черта в качестве первого символа в строке, а затем новая строка.
Хорошо, я разобрался. Я должен был лучше поискать в документации, прежде чем размещать вопрос здесь.
В любом случае, согласно этой ссылке: http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch4.htm#sthref840
SQL*Plus рассматривает подпрограммы PL/SQL так же, как и команды SQL, за исключением того, что точка с запятой (;) или пустая строка не завершают и не выполняют блок. Завершайте подпрограммы PL/SQL, вводя точку (.) с новой строки. Вы также можете завершить и выполнить подпрограмму PL/SQL, введя косую черту (/) с новой строки.
Вместо END вы должны завершить подпрограмму символом /.