Назад | Перейти на главную страницу

Скрипт 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"

Вам нужно завершить ваш скрипт другой строкой после 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, который дает вам следующий номер строки в вашем скрипте - он ждет, когда вы скажете, что вы закончили.