Скрипт PL/SQL Plus просто дает мне цифры
У меня есть сценарий 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"
1 ответ
Вам нужно завершить ваш скрипт другой строкой после 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 Plus, знак "/" указывает SQL Plus запускать все, что вы поместили в буфер с момента выполнения последней команды. Инкрементальные числа, которые вы получаете, - это SQL*Plus, дающий вам следующий номер строки в вашем скрипте - он ждет, когда вы скажете, что все готово.