O script PL / SQL Plus apenas fornece números

3

Eu tenho um script PL / SQL que estou tentando executar a partir do shell de comando com o SQLPLUS. No entanto, sempre que eu vou executá-lo, tudo que eu volto é um número e um cursor esperando por alguma entrada. Quando eu clico em enter, apenas aumenta o número e repete o processo. Aqui está uma consulta fictícia que faz a mesma coisa

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;

para executar isso a partir do shell de comando que eu uso: sqlplus me/myPass@myDB @"dummy.sql"

    
por Scott 12.10.2010 / 23:49

1 resposta

6

Você precisa terminar seu script com outra linha após o END; contendo um '/' na primeira coluna, assim:

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

Quando você cria um bloco PL / SQL via SQL Plus, o '/' diz ao SQL Plus para executar tudo o que você colocou no buffer desde o último comando executado. Os números incrementais que você está obtendo são o SQL * Plus, fornecendo o próximo número de linha em seu script - ele está esperando que você diga que acabou.

    
por 13.10.2010 / 00:20