Imprimer du texte dans la fenêtre Feuille de travail Oracle SQL Developer SQL

90

J'utilise Oracle SQL (dans SQLDeveloper, en utilisant la feuille de calcul SQL). Je souhaite imprimer une déclaration avant ma sélection, telle que

PRINT 'Querying Table1';
SELECT * from Table1;

Que dois-je utiliser pour imprimer / afficher la sortie de texte? Ce n'est pas Print, car cela me donne l'erreur: la variable de liaison Table1n'est pas déclarée. DBMS_OUTPUT.PUT_LINE est une commande inconnue. (De toute évidence, je suis un développeur SQL et un utilisateur Oracle inexpérimenté. Il doit y avoir un synonyme de Print, mais j'ai du mal à trouver de l'aide sans savoir ce que c'est.)

jeudi
la source

Réponses:

143

entrez la description de l'image ici

pour des commentaires 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;
/

Tu devrais obtenir:

anonymous block completed
simple comment

anonymous block completed
second simple comment

si vous souhaitez imprimer les résultats des variables, voici un autre exemple:

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;

votre sortie doit être:

anonymous block completed
first comment

anonymous block completed
comment2
Perry Tribolet
la source
1
La première ligne définit la sortie du serveur sur le format enveloppé; doit être défini sur la sortie du serveur au format WRAPPED;
geographika
Je ne peux pas faire fonctionner ça. set serveroutput on format word_wrapped; begin dbms_output.put_line('hello world'); end; select * from dual Donne-moi: 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
Dans les versions plus récentes de SQL Developer, vous devez d'abord ouvrir la fenêtre Sortie du SGBD à l'aide de la barre de menus topleven: Affichage> Sortie Dbms.
Bruno Ranschaert
aurait pu mais la capture d'écran et aucun texte, aurait été un +1 haha
David Mann
41
PROMPT text to print

Remarque: doit utiliser Exécuter en tant que script (F5) et non Exécuter l'instruction (Ctl + Entrée)

H77
la source
1
C'est tellement utile. Merci!
sunlover3
Fonctionne aussi pour moi avec Run Statement (Ctl + Enter).
Pascal R.
21

Vous pouvez activer l'écho :

set echo on
REM Querying table
select * from dual;

Dans SQLDeveloper, appuyez sur F5 pour exécuter en tant que script.

Eddie Awad
la source
J'avais accepté cela comme une réponse, mais je vois qu'une autre réponse a beaucoup plus de points, alors j'ai changé mon acceptation en cela. Cependant, cela a fonctionné pour moi et c'est une bonne réponse.
thursdaysgeek
13

Vous pouvez mettre votre texte dans une instruction de sélection telle que ...

SELECT 'Querying Table1' FROM dual;
Leigh Riffel
la source
8

La réponse principale a laissé de côté une étape pour les nouvelles installations où il faut ouvrir la fenêtre de sortie de dbms.

entrez la description de l'image ici

Puis le script que j'ai utilisé:

dbms_output.put_line('Start');

Un autre script:

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

Pour moi, je ne pouvais que le faire fonctionner

set serveroutput on format word_wrapped;

Le wrapping et WRAPPED ont simplement généré des erreurs: la commande SQLPLUS a échoué - pas assez d'arguments

Michael Erickson
la source
1

Si vous ne souhaitez pas que toutes vos instructions SQL soient répercutées, mais que vous souhaitez uniquement voir les résultats facilement identifiables de votre script, procédez comme suit:

activer l'écho

REM MyFirstTable

désactiver l'écho

supprimer de MyFirstTable;

activer l'écho

REM MySecondTable

désactiver l'écho

supprimer de MySecondTable;

La sortie de l'exemple ci-dessus ressemblera à ceci:

-REM MyFirstTable

13 lignes supprimées.

-REM MySecondTable

27 lignes supprimées.

Frank Staheli
la source
0

Si j'omets de commencer - fin, c'est une erreur. Donc, pour moi, cela fonctionne (rien d'autre n'est nécessaire):

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