web-dev-qa-db-ja.com

PL / SQLPlusスクリプトは私に数字を与えるだけです

SQLPLUSを使用してコマンドShellから実行しようとしているPL/SQLスクリプトがあります。ただし、実行しようとすると、返されるのは数値とカーソルだけで、入力を待っています。 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"

3
Scott

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;
/

SQLを介してPL/SQLブロックを作成する場合さらに、「/」はSQLに指示します Plusは、最後のコマンドの実行以降にバッファに入れたすべてのものを実行します。取得する増分番号はSQL * Plusであり、スクリプトの次の行番号を提供します。完了したことを通知するのを待っています。

6
DCookie