Selezione con limiti in PL/SQL
Premetto che alla maggior parte di voi questo post non interesserà affatto. Ma siccome c'è un piccolo gruppo di informatici tra gli utenti assidui di questo sito, vale la pena di scrivere qualcosa che serva anche a loro.
Attualmente stò lavorando con PL/SQL alla realizzazione del Safety Management System del CERN. Mi sono imbattuto nel problema di dover ricavare da una base di dati Oracle un certo range di record. Nelle mie precedenti esperienze lavorative avevo utilizzato sempre l'opzione LIMIT direttamente nel costrutto SELECT, pensando che fosse standard SQL.
E invece non lo è. E tale opzione non è prevista nello standard SQL attuale.
E pensare che ho perso circa 3 ore a pensare perché il mio codice non funzionava (fortuna che posso testare il codice prima di metterlo sui server di produzione!). La soluzione con Oracle consiste nell'utilizzare ROWNUM: ad esempio per selezionare i record che hanno numero di ordine compreso tra 10 e 50 si userà
SELECT * FROM employees WHERE ROWNUM BETWEEN 10 AND 50 ORDER BY cern_id;
Importante in questi casi è utilizzare il costrutto ORDER BY! Se non lo specificate Oracle vi restituirà semplicemente 50-10=40 records!
































ho smarrito il mio pappagallo……cercasi pappagallo verde….si offre ricompensa….