ORA: Ultimo valore di campi counter in stored procedure
copia linkDescrizione del difetto
Errore nella generazione del codice di una stored procedure se veniva utilizzata una variabile per leggere il valore di una query di inserimento. Tale malfunzionamento si verificava solo se:
- veniva utilizzato il database Oracle;
- veniva richiesto ad Instant Developer di rileggere il valore di un campo contatore da una query di inserimento contenuta in una stored procedure;
- il campo contatore non avesse il flag Automatico attivato;
- la variabile venisse utilizzata all'interno di un'altra query all'interno della stessa procedura.

Come mostrato nell'esempio la variabile ID, utilizzata per rileggere il valore del campo counter dopo l'inserimento, possedeva lo stesso codice del campo contatore. Se la variabile veniva poi utilizzata, per esempio, in una clausola Where di un'altra query nella stessa procedura, il codice generato era ambiguo (vedi where IDDATO = IDDATO).
A partire dalla versione 9.5 le variabili di questo tipo hanno sempre il flag Automatico attivato ed il codice, in questo caso, viene così calcolato:
v_[CODICEAUTOMATICO]dove CODICEAUTOMATICO corrisponde al nome della variabile senza spazi e caratteri non utilizzabili come nome logico degli oggetti su database.
Effetti del malfunzionamento
- La nuova variabile non aveva il flag Automatico attivo ed il codice della variabile coincideva con quello del campo di cui veniva riletto il valore. Qualora la variabile fosse stata utilizzata all'interno di un'altra query si potevano ottenere effetti indesiderati.
Soluzioni
Questo difetto è stato risolto nella versione 9.5. Usando le versioni precedenti è sufficiente attivare il flag Automatico nella videata delle proprietà della variabile. In alternativa è sufficiente specificare un codice che non coincida con nessuno dei campi delle tabelle utilizzate nelle query in cui viene utilizzata la variabile.
Funzionalità interessate
L'utilizzo di variabili in stored procedure su database Oracle qualora le variabili siano utilizzate per rileggere il valore di un campo contatore.
Note
- Questo difetto si manifesta solo utilizzando il database Oracle. Gli altri database, infatti, richiedono un apposito prefisso per le variabili che rendono impossibile l'ambiguità.
- Malfunzionamento relativo alla segnalazione 000474-2010.
Ultima modifica: 08/10/2010 / Validità: da 9.5.4160