Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Oracle PL/SQL] Aprire due cursori in parallelo.

    Con questa sintassi:

    codice:
      1  declare  
      
      2    l_x sys_refcursor;  
      3    l_y sys_refcursor;  
      
      4    l_tmp number;  
      
      5  begin  
      6    open l_x for 'select x from tx order by x';  
      7    open l_y for 'select x from ty order by x';  
      
      8   loop  
      9    fetch l_x into l_tmp; 
      10    exit when l_x%notfound; 
      11    dbms_output.put_line (l_tmp); 
      12   fetch l_y into l_tmp; 
      13    exit when l_y%notfound; 
      14    dbms_output.put_line (l_tmp); 
      15  end loop; 
      
      16   close l_x; 
      17   close l_y; 
      18 end;
    non ottengo il risultato che mi aspetto!!!
    Nel senso che se il primo cursore estrae N righe e il secondo nessuna, mi trovo stampata solo la prima riga estratta dal primo cursore.
    Ovviamente appena legge con il secondo e non trova nulla esce dal loop.
    Chiaramente problema inverso nel caso in cui il primo non trovasse niente ed il secondo una o più righe, ci sarebbe il foglio bianco perchè uscirebbe subito!!!!

    Questo non mi va bene, io devo potere stampare tutte le righe di tutti e due i cursori sempre e comunque.

    Come cambio tale sintassi???

    Grazie anticipatamente a chi mi saprà dare dritte in merito!
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  2. #2
    Utente di HTML.it L'avatar di Sgnafurz
    Registrato dal
    Mar 2003
    Messaggi
    2,182
    [premetto che di pl sql nn mi ricordo più una mazza]
    io ti consiglio di fare due loop separati per ogni fetch

  3. #3
    Due loop separati non mi consentono di stampare in parallelo le informazioni reperite da entrambi i cursori, ma solo in sequenza!!!!

    Questo è il problema...
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.