Precedente :: Successivo |
Autore |
Messaggio |
horus Macchinista
Registrato: 22/03/05 09:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 27 Ott 2005 13:54 Oggetto: * Cursore in Oracle |
|
|
Supponiamo di avere un'applicazione web che si appoggia ad un db Oracle. Per un'estrazione/elaborazione dei dati è stata fatta una procedura in pl/sql che fa tutto il lavoro restituendo il "recordset" bello e pronto.
Il problema:
nella procedura c'è una diga del tipo:
Codice: | open nome_cursore for stringa_sql; |
Nel db di prova (8.1.6.0) gira senza problemi in produzione (8.0.4.4) non va.
Domande:
1) non essendoci altre differenze a parte la versione credo che il malfunzionamento sia da imputare a quello ma in rete non ho trovato molte notizie a riguardo, qualcuno mi conferma/smentisce l'ipotesi?
2) ammesso che non si possa usare quel comando come si può fare in alternativa ad aprire un cursore con una query variabile?
P.S.: eventuali risposte del tipo aggiorna il database non saranno ammesse in quanto non applicabili. |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 28 Ott 2005 14:46 Oggetto: |
|
|
Sarebbe bello sapere l'errore che ti da... ed anche controllare che la query che usi in "stringa_sql" sia corretta, hai provato con SQL+ ad eseguirla? Controllato anche l'utente ed i suoi privilegi?
Scusa se sembrano risposte banali ma quasi sempre i problemi come il tuo si risolvono con questi controlli... |
|
Top |
|
|
horus Macchinista
Registrato: 22/03/05 09:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 28 Ott 2005 15:06 Oggetto: |
|
|
Cercando un po' in giro credo di aver trovato che i cursori dinamici sono stati aggiunti dalla versione 8i (che inizia con la 8.1.5) quindi semplicemente non si può fare.
Ho anche trovato che nelle precedenti versioni l'unico modo di fare query dinamiche era utilizzare dbms_sql. In effetti con quel metodo funziona (perciò escludo errori nella query) ma è più lento e soprattutto devo definire i tipi delle colonne del cursore prima di eseguirlo.
Per il momento mi arrangio così ma se qualcuno ha idee alternative a dbms_sql ben venga.
Edit: per la cronaca l'errore era Citazione: | PLS-00103: Encountered the symbol "stringa_sql" when expecting one of the following:
select
|
|
|
Top |
|
|
happy_dolphin Comune mortale
Registrato: 08/11/05 16:44 Messaggi: 2
|
Inviato: 08 Nov 2005 17:00 Oggetto: |
|
|
Forse una soluzione alternativa e eseguire la creazione dinamica di una vista basandosi sulla query dinamica "CREATE OR REPLACE VIEW ecc.." + select dinamica
eseguire la creazione dello script nel linguaggio
prima del apertura del cursore
ed eseguire l'apertura del cursore sulla vista fissa e non sulla query dinamica.
es. SELECT * FROM <nome vista> |
|
Top |
|
|
|