У меня есть сценарий PL / SQL, который я пытаюсь запустить из командной оболочки с помощью SQLPLUS. Однако всякий раз, когда я запускаю его, все, что я получаю, - это число и курсор, ожидающие ввода. Когда я нажимаю Enter, он просто увеличивает число и повторяет процесс. Вот фиктивный запрос, который делает то же самое
set serveroutput on
DECLARE
cursor getServerTime IS
SELECT sysdate as t from dual;
myTime getServerTime%ROWTYPE;
BEGIN
open getServerTime;
FETCH getServerTime into myTime;
dbms_output.put_line(myTime.t);
close getServerTime;
END;
чтобы запустить это из командной оболочки, я использую: sqlplus me/myPass@myDB @"dummy.sql"
Вам нужно завершить ваш скрипт другой строкой после END; содержащие '/' в первом столбце, таким образом:
set serveroutput on
DECLARE
cursor getServerTime IS
SELECT sysdate as t from dual;
myTime getServerTime%ROWTYPE;
BEGIN
open getServerTime;
FETCH getServerTime into myTime;
dbms_output.put_line(myTime.t);
close getServerTime;
END;
/
Когда вы создаете блок PL / SQL через SQLКроме того, '/' сообщает SQLПлюс для запуска всего, что вы поместили в буфер с момента выполнения последней команды. Увеличивающиеся числа, которые вы получаете, это SQL * Plus, который дает вам следующий номер строки в вашем скрипте - он ждет, когда вы скажете, что вы закончили.