Risultati da 1 a 7 di 7
  1. #1
    La Borga L'avatar di hendor
    Data Registrazione
    28-02-02
    Località
    Roma
    Messaggi
    10,613

    Predefinito [PL/SQL Oracle] Cursore dinamico

    C'è qualche esperto di PL/SQL qui dentro?

    Devo costruire un cursore dinamico. La condizione di where cambia in funzione di certe condizioni. Il problema è che:

    1) Il cursore va necessariamente definito nella DECLARE.
    2) Nell DECLARE non si possono usare IF, CASE, ecc.

  2. #2
    Il Fantasma L'avatar di Shegar
    Data Registrazione
    05-10-06
    Località
    Milano
    Messaggi
    94

    Predefinito Riferimento: [PL/SQL Oracle] Cursore dinamico

    e' proprio necessario un cursore? non si riesce con delle query dinamiche eseguendole con l'execute immediate??

  3. #3
    La Borga L'avatar di hendor
    Data Registrazione
    28-02-02
    Località
    Roma
    Messaggi
    10,613

    Predefinito Riferimento: [PL/SQL Oracle] Cursore dinamico

    Ho piallato tutto e costretto il cliente a dei batch Java.
    Fanculo il PL/SQL, che è lammerda.

  4. #4
    Il Fantasma L'avatar di Shegar
    Data Registrazione
    05-10-06
    Località
    Milano
    Messaggi
    94

    Predefinito Riferimento: [PL/SQL Oracle] Cursore dinamico

    dove sono io prima c'erano i batch primo giorno di produzione tempo di elaborazione in java superava le 16 ore a lotto ( il calcolo degli estratti conto ).
    Rifare tutto di corsa in PL 1 ora a lotto.
    Java per elaborazioni massicce sui db e' il male

  5. #5
    Il Puppies L'avatar di ~spiral~
    Data Registrazione
    07-05-08
    Messaggi
    302

    Predefinito Riferimento: [PL/SQL Oracle] Cursore dinamico

    Ti parlo di T-SQL, ma il concetto (e le metodologie) dovrebbero essere applicabili anche a PL/SQL

    Spesso, ma non sempre, i cursori possono essere sostituiti con due approcci:

    1) CTE: le Common Table Expression solitamente permettono di dichiarare dei set di dati auto-referenzianti nella dichiarazione stessa della CTE, permettendo così di simulare una ricorsione. Abbastanza semplice da capire e scrivere, ma poco performante su set grandi o su ricorsioni profonde

    2) Tally table: il trucco della Tally table consiste nel creare una tabella di interi progressivi abbastanza grande (40000 record nella maggior parte dei casi può andare bene). Utilizzando join adeguati (solitamente cross join o cross apply) e relative condizioni WHERE si riesce ad espandere il set iniziale simulando loop. Se poi lo applichi assieme a funzioni di "finestra" (la clausola "OVER" di t-sql, la funzione RANK ecc) riesci a creare query molto veloci che seguono algoritmi molto complessi. Quasi sempre più veloci della soluzione 1 ma normalmente difficilotte da scrivere.

    Spero ti siano d'aiuto, non so se sono applicabili nel tuo caso

    Ciao

  6. #6
    La Borga L'avatar di hendor
    Data Registrazione
    28-02-02
    Località
    Roma
    Messaggi
    10,613

    Predefinito Riferimento: [PL/SQL Oracle] Cursore dinamico

    Citazione Originariamente Scritto da Shegar Visualizza Messaggio
    dove sono io prima c'erano i batch primo giorno di produzione tempo di elaborazione in java superava le 16 ore a lotto ( il calcolo degli estratti conto ).
    Rifare tutto di corsa in PL 1 ora a lotto.
    Java per elaborazioni massicce sui db e' il male
    Per quanto mi riguarda il tempo di elaborazione è rimasto lo stesso.
    E c'è il vantaggio di usare un linguaggio molto più espressivo.

  7. #7
    Suprema Borga Imperiale L'avatar di StM
    Data Registrazione
    12-11-01
    Messaggi
    16,201

    Predefinito Riferimento: [PL/SQL Oracle] Cursore dinamico

    Citazione Originariamente Scritto da Shegar Visualizza Messaggio
    e' proprio necessario un cursore? non si riesce con delle query dinamiche eseguendole con l'execute immediate??
    Appunto... si usa una variabile di tipo NOMETABELLA%ROWTYPE, la si valorizza con una execute immediate di una query costruita dinamicamente, e si vive felici.

    PL/SQL è un linguaggio estremamente potente, e sicuramente non ignorabile in talune situazioni.

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice HTML è Disattivato