Заставьте ваш скрипт сделать либо:
DELETE FROM f2020.SOCIETES
/
или
DELETE FROM f2020.SOCIETES;
без sla sh.
Из документации :
/ (sla sh)
Выполняет последнюю выполненную команду SQL или блок PL / SQL, который хранится в SQL buffer.
и далее в примере:
Введите sla sh (/) для повторного выполнения команды в буфере
... это именно то, что вы видите.
В других местах этих документов :
Точка с запятой (;) означает что это конец команды. Нажмите Return или нажмите Выполнить. SQL* Plus обрабатывает команду и отображает результаты
Как и многие клиенты SQL* Plus обрабатывает точку с запятой в конце вашего оператора SQL как разделитель операторов - это not часть самого оператора (что приводит к некоторой путанице, например, к вызовам dynamici c SQL и JDB C) - и когда он его видит, он выполняет команду. Выполненный оператор остается в буфере команд; и если вы list
увидите текущий буфер команд, он не покажет эту точку с запятой. Когда вы запускаете sla sh, он снова выполняет буфер.
В PL / SQL все немного иначе; там блок PL / SQL должен заканчиваться точкой с запятой, которая является частью блока и появляется в буфере. Вы должны использовать sla sh до выполнить PL / SQL блок .