Oracle
 sql >> Database >  >> RDS >> Oracle

Come stampare SYS_REFCURSOR con la finestra PLSQLDeveloper?

Se per "Finestra SQL" intendi SQL*PLUS , quindi per stampare (usando PRINT comando) il contenuto di un cursore, è necessario dichiarare una variabile bind al di fuori del blocco PL/SQL, assegnare un valore a quella variabile bind all'interno del blocco PL/SQL eseguendo il blocco e quindi stampare il contenuto utilizzando PRINT comando:

SQL> variable  IO_CURSOR refcursor;

SQL> DECLARE
  2    SOME_VAR_1 VARCHAR2(20);
  3    SOME_VAR_2 VARCHAR2(20);
  4    SOME_VAR_3 DECIMAL;
  5    --IO_CURSOR SYS_REFCURSOR;
  6    BEGIN
  7      SOME_VAR_1 := 'test1';
  8      SOME_VAR_2 := 'test2';
  9      SOME_VAR_3 := 1;
  10     --IO_CURSOR := NULL;  -- no need to do that
  11     Get_Analysis_Data(p_in_symbol_type => SOME_VAR_1,
  12                       p_in_symbol => SOME_VAR_2, 
  13                       p_in_isr_id => SOME_VAR_3,
  14                       isr_main_view => :IO_CURSOR);
  15   END;
  16 /

  SQL> print io_cursor;

MODIFICA :

Per vedere il contenuto di un cursore in PL/SQL Developer, come una delle opzioni, puoi semplicemente fare quanto segue:

  1. Finestra\Nuovo\Test
  2. Copia/incolla lì il tuo blocco PL/SQL anonimo. Prima di questo rimuovere IO_CURSOR SYS_REFCURSOR; dichiarazione di variabile. Non ce n'è bisogno. Cambia anche isr_main_view => IO_CURSOR a isr_main_view => :IO_CURSOR . Devi usare la variabile bind in questo caso.
  3. Nella variables window nella parte inferiore della test window specifica il nome della variabile del tuo cursore di riferimento il cui contenuto vuoi vedere (IO_CURSOR senza punto e virgola ) e seleziona il tipo cursor .
  4. Esegui il blocco premendo il triangolo verde.
  5. Dopo l'esecuzione del blocco PL/SQL, fare riferimento alla colonna value della variables window . Premi il pulsante con i puntini di sospensione per vedere il contenuto del cursore di riferimento IO_CURSOR .