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

Другие вопросы по тегам