Impression de la valeur d’une variable dans SQL Developer

Je voulais imprimer la valeur d’une variable particulière qui se trouve dans un bloc anonyme. J’utilise Oracle SQL Developer. J’ai essayé d’utiliser dbms_output.put_line . Mais ça ne fonctionne pas. Le code que j’utilise est indiqué ci-dessous.

 SET SERVEROUTPUT ON DECLARE CTABLE USER_OBJECTS.OBJECT_NAME%TYPE; CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE; V_ALL_COLS VARCHAR2(500); CURSOR CURSOR_TABLE IS SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' AND OBJECT_NAME LIKE 'tb_prm_%'; CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2) IS SELECT COLUMN_NAME FROM ALL_TAB_COLS WHERE TABLE_NAME = V_TABLE_NAME; BEGIN OPEN CURSOR_TABLE; LOOP FETCH CURSOR_TABLE INTO CTABLE; EXIT WHEN CURSOR_TABLE%NOTFOUND; OPEN CURSOR_COLUMNS (CTABLE); V_ALL_COLS := NULL; LOOP FETCH CURSOR_COLUMNS INTO CCOLUMN; V_ALL_COLS := V_ALL_COLS || CCOLUMN; IF CURSOR_COLUMNS%FOUND THEN V_ALL_COLS := V_ALL_COLS || ', '; ELSE EXIT; END IF; END LOOP; DBMS_OUTPUT.PUT_LINE(V_ALL_COLS); END LOOP; CLOSE CURSOR_TABLE; END; 

Et je ne reçois la sortie que lorsque le anonymous block completed .

Vous devez activer dbms_output. Dans Oracle SQL Developer:

  1. Afficher la fenêtre de sortie du SGBD (Affichage-> Sortie SGBD).
  2. Appuyez sur le bouton “+” en haut de la fenêtre Dbms Output, puis sélectionnez une connexion à la firebase database ouverte dans la boîte de dialog qui s’ouvre.

En SQL * Plus:

  SET SERVEROUTPUT ON 

SQL Developer semble uniquement afficher le texte DBMS_OUTPUT lorsque vous avez explicitement activé le volet de la fenêtre DBMS_OUTPUT.

Accédez à (Menu) VIEW -> Dbms_output pour appeler le volet.

Cliquez sur le signe Green Plus pour activer la sortie pour votre connexion, puis exécutez le code.

EDIT: N’oubliez pas de définir la taille du tampon en fonction de la quantité de sortie attendue.

Rendre la sortie du serveur en premier

  1. SET SERVEROUTPUT on

  2. Accédez à la fenêtre de sortie SGBD (Affichage-> Sortie SGBD)

  3. puis appuyez sur Ctrl + N pour connecter le serveur

Il y a une autre option:

 set serveroutput on format wraped; 

ou

Ouvrez le menu “view” et cliquez sur “dbms output”. Vous devriez obtenir une fenêtre de sortie dbms au bas de la feuille de calcul. Vous devez ensuite append la connexion (pour une raison quelconque, cela ne se fait pas automatiquement).

sélectionnez Affichage -> Sortie SGBD dans le menu et

Accédez à la fenêtre Sortie du SGBD (Affichage-> Sortie SGBD).

 DECLARE CTABLE USER_OBJECTS.OBJECT_NAME%TYPE; CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE; V_ALL_COLS VARCHAR2(5000); CURSOR CURSOR_TABLE IS SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' AND OBJECT_NAME LIKE 'STG%'; CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2) IS SELECT COLUMN_NAME FROM ALL_TAB_COLS WHERE TABLE_NAME = V_TABLE_NAME; BEGIN OPEN CURSOR_TABLE; LOOP FETCH CURSOR_TABLE INTO CTABLE; OPEN CURSOR_COLUMNS (CTABLE); V_ALL_COLS := NULL; LOOP FETCH CURSOR_COLUMNS INTO CCOLUMN; V_ALL_COLS := V_ALL_COLS || CCOLUMN; IF CURSOR_COLUMNS%FOUND THEN V_ALL_COLS := V_ALL_COLS || ', '; ELSE EXIT; END IF; END LOOP; close CURSOR_COLUMNS ; DBMS_OUTPUT.PUT_LINE(V_ALL_COLS); EXIT WHEN CURSOR_TABLE%NOTFOUND; END LOOP;`enter code here` CLOSE CURSOR_TABLE; END; 

J’ai ajouté Close of second cursor. Ça marche et ça sort aussi …