Imprimir texto na janela Planilha SQL do Oracle SQL Developer

90

Estou usando o Oracle SQL (no SQLDeveloper, usando o SQL Worksheet). Eu gostaria de imprimir uma declaração antes de minha seleção, como

PRINT 'Querying Table1';
SELECT * from Table1;

O que eu uso para imprimir / mostrar saída de texto? Não é Print, porque isso me dá o erro: Bind Variable Table1is NOT DECLARED. DBMS_OUTPUT.PUT_LINE é um comando desconhecido. (Obviamente, sou um inexperiente usuário SQLDeveloper e Oracle. Deve haver algum sinônimo para Print, mas estou tendo problemas para encontrar ajuda sem saber o que é.)

quinta feira
fonte

Respostas:

143

insira a descrição da imagem aqui

para comentários simples:

set serveroutput on format wrapped;
begin
    DBMS_OUTPUT.put_line('simple comment');
end;
/

-- do something

begin
    DBMS_OUTPUT.put_line('second simple comment');
end;
/

voce deveria pegar:

anonymous block completed
simple comment

anonymous block completed
second simple comment

se você quiser imprimir os resultados das variáveis, aqui está outro exemplo:

set serveroutput on format wrapped;
declare
a_comment VARCHAR2(200) :='first comment';
begin
    DBMS_OUTPUT.put_line(a_comment);
end;

/

-- do something


declare
a_comment VARCHAR2(200) :='comment';
begin
    DBMS_OUTPUT.put_line(a_comment || 2);
end;

sua saída deve ser:

anonymous block completed
first comment

anonymous block completed
comment2
Perry Tribolet
fonte
1
A primeira linha define a saída do servidor no formato agrupado; deve ser definido serveroutput no formato WRAPPED;
geographika
Eu não consigo fazer isso funcionar. set serveroutput on format word_wrapped; begin dbms_output.put_line('hello world'); end; select * from dual Dá-me: select * from dual; Error report: ORA-06550: line 7, column 1: PLS-00103: Encountered the symbol "SELECT" 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action
dwjohnston
9
Em versões mais recentes do SQL Developer, primeiro você deve abrir a janela de saída do DBMS usando a barra de menu topleven: Exibir> Saída de Dbms.
Bruno Ranschaert
poderia ter, mas a captura de tela e nenhum texto, teria sido um +1 haha
David Mann
41
PROMPT text to print

Nota: deve usar Executar como Script (F5) e não Executar Instrução (Ctl + Enter)

H77
fonte
1
Isso é muito útil. Obrigado!
sunlover 3 de
Funciona para mim com Run Statement (Ctl + Enter) também.
Pascal R.
21

Você pode definir o eco para ativado :

set echo on
REM Querying table
select * from dual;

No SQLDeveloper, pressione F5 para executar como um script.

Eddie Awad
fonte
Eu tinha aceito isso como uma resposta, mas vejo que outra resposta tem muito mais pontos, então mudei minha aceitação para ela. No entanto, isso funcionou para mim e é uma boa resposta.
quinta
13

Você pode colocar seu texto em uma declaração selecionada, como ...

SELECT 'Querying Table1' FROM dual;
Leigh Riffel
fonte
8

A resposta principal deixou de fora uma etapa para novas instalações em que é necessário abrir a janela de saída do dbms.

insira a descrição da imagem aqui

Então o script que usei:

dbms_output.put_line('Start');

Outro script:

set serveroutput on format wrapped;
begin
    DBMS_OUTPUT.put_line('jabberwocky');
end;
ΩmegaMan
fonte
7

Para mim, só consegui fazer funcionar com

set serveroutput on format word_wrapped;

O wraped e WRAPPED apenas geraram erros: o comando SQLPLUS falhou - argumentos insuficientes

Michael Erickson
fonte
1

Se você não deseja que todas as suas instruções SQL sejam reproduzidas, mas deseja apenas ver os resultados facilmente identificáveis ​​do seu script, faça desta forma:

definir eco ligado

REM MyFirstTable

definir eco desligado

excluir de MyFirstTable;

definir eco ligado

REM MySecondTable

definir eco desligado

excluir de MySecondTable;

A saída do exemplo acima será semelhante a esta:

-REM MyFirstTable

13 linhas excluídas.

-REM MySecondTable

27 linhas excluídas.

Frank Staheli
fonte
0

Se eu omitir início - fim, é erro. Então, para mim, isso está funcionando (nada mais é necessário):

set serveroutput on;
begin
DBMS_OUTPUT.PUT_LINE('testing');
end;
FrenkyB
fonte