Le funzioni, in qualsiasi database, non possono restituire più di un record.

Nel caso in cui la SELECT restituisca più record, Oracle va in eccezione con l'errore TOO_MANY_ROWS.

E' possibile intercettare questa eccezione, e agire di conseguenza.

Anche Oracle, come praticamente tutti i db server, è in grado di gestire le tabelle temporanee.

Queste si cancellano al momento della chiusura della sessione.

E questo è l'unico punto che ancora non ho ben capito; perchè alla chiusura e riapertura di SQL Developer, la tabella stava ancora la.

Da quanto ho capito le sessioni non scadono subito, ma dopo un tot di tempo; quindi considerate l'eventuale cancellazione della tabella quando avete finito, in modo da non rishciare di incastrarvi.

In Oracle è abbastanza semplice controllare le connessioni attive interrogando V$SESSION.

Ad esempio:

SELECT * FROM v$session 
WHERE username IS NOT NULL 
ORDER BY username ASC;

Sul mio db Oracle, ho una funzione (non fatta da me) che restituisce i valori in questo modo:

'49;50;30;0;0;0;0;0;'

Di tutto ciò, mi serve prendere solo il terzo valore; quindi dovrei spezzare la stringa in corrispondenza del punto e virgola, e poi prendere il terzo pezzo.

Per una delle aziende per cui lavoro, ho creato un REST web service in Java, che si connette al database Oracle, ed espone i dati in formato JSON.

Partendo da questo esempio reale, vi mostro come creare un web service REST in Java, usando JAX-WS!

Questo è quello che useremo nel progetto:

  • Maven -> per gestire il progetto e le dipendenze
  • Grizzly -> come HTTP server
  • Jersey -> framework open source per la creazione di servizi RESTful in Java
  • OJDBC -> per la connessione al db Oracle; se avete un altro tipo di db, potete usare JDBC o un altro driver appropriato