Da qualche tempo sono tornato a lavore alacremente su un linguaggio, il PL-SQL, molto versatile ma anche complicato. Il mio lavoro è quello di scoprire e correggere dei bug di codice, e ultimamente mi sono trovato di fronte a questo errore.
Bene se uno conosce un pò Oracle sa che è presente un campo "nascosto" chiamato ROWID, è un campo che identifica la riga nella tabella.
Ecco questo è un campo particolare, perchè se noi facciamo una select ad esempio
SELECT emp_id FROM emp WHERE emp_id = 0
e non esiste nessun campo con emp_id = 0 sappiamo la query semplicemente non ci restituisce nulla. Se al contrario facciamo:
SELECT emp_id FROM emp WHERE ROWID = 0
e non esiste nessun campo con ROWID = 0 (in realtà poi il ROWID è un campo con valore esadecimale) la query al contrario ci restituirà l'errore ORA-01410.
Solitamente se usiamo il ROWID dobbiamo selezionarlo da una tabella e cercarlo nella stessa, altrimenti potremmo o avere questo errore oppure avremo dei dati incongruenti, e non saprei dire quale dei due sia la cosa peggiore.
17 gennaio, 2008
Iscriviti a:
Post (Atom)