Post

Visualizzazione dei post da dicembre, 2014

SET UNUSED COLUMN

Il comando SET UNUSED COLUMN viene usato per rende la colonna non più disponibile. E' una cancellazione logica perché viene aggiornato il DataDictionary. Può essere visto come un drop virtuale, perché il comando Drop Column richiede alcuni minuti ad Oracle per esaminare ogni riga e per cancellare fisicamente la colonna. Conviene  eseguire il comando DROP in un secondo momento, in un periodo di bassa attività del database. R e g o l e Vengono droppate le constraints e gli indici definiti sulla colonna. La colonna non può essere più recuperata anche se si esegue l'istruzione Rollback. Una volta eseguito il comando UNUSED, è possibile creare un'altra colonna, nella stessa tabella, con il medesimo nome. S i n t a s s i ALTER TABLE   nome_tabella   SET UNUSED COLUMN   nome_colonna1; ALTER TABLE   nome_tabella   SET UNUSED   (nome_colonna1,.., nome_colonnaM); Esiste una vista del Dizionario Dati che contiene il nome delle tabelle e il numero di colonne in stato

Funzione TO_YMINTERVAL

Immagine
La funzione TO_YMINTERVAL converte una stringa nel tipo di dato INTERVAL YEAR TO MONTH. S i n t a s s i TO_YMINTERVAL ('a-m') dove a e m sono l'anno e il mese. Esempio select to_yminterval ('04-05') from dual; Restituisce un intervallo di 4 anni e 5 mesi. Per questo motivo è usato spesso per sommare un intervallo ad una data. select sysdate, sysdate + to_yminterval ('04-05') from dual;

CONNECT BY, PRIOR and START WITH

Immagine
La classica relazione parent-child prevede due tabelle, una padre e uno figlio in join tra loro, invece nel caso di HIERACHICAL DATA abbiamo una sola tabella (o vista) in self-join ed è possibile avere una relazione parent–child–grandchild–great-grandchild e così via. Vediamo un esempio di una tale relazione gerarchica. Consideriamo la seguente tabella ORGANIGRAMMA. S i n t a s s i SELECT LEVEL, EMPLOYEE_ID, TITLE  FROM ORGANIGRAMMA   START WITH EMPLOYEE_ID = 1   CONNECT BY REPORTS_TO = PRIOR EMPLOYEE_ID; L'istruzione START WITH definisce la radice (root node); la colonna specificata deve identificare in maniera univoca un record pertanto conviene che sulla colonna sia definita una primary key. CONNECT BY definisce la relazione di self-join e cioè individuano le colonne in join. La parola chiave PRIOR può essere posta davanti ad una delle due colonne e definisce come è attraversato l'albero: CONNECT BY REPORTS_TO = PRIOR EMPLOYEE_ID l'albero è attra