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.)

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

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)


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.


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;

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;

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


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.


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;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.