Tabella di configurazione

 

Una tabella di configurazione è un modo razionale per organizzare i parametri di un ambiente PL/SQL. In essa possiamo memorizzare le informazioni che possono variare il comportamento di un package, una procedura, una funzione o altro.

Segue un semplice esempio di tabella con relativo indice (si tratta di un indice funzionale, per rendere il parametro case-unsensitive):

CREATE TABLE CONFIGURAZIONE
(
  PARAMETRO VARCHAR2(255 BYTE),
  VALORE VARCHAR2(255 BYTE),
  NOTE VARCHAR2(1000 BYTE)
);
CREATE UNIQUE INDEX IDX_CHIAVE ON PARAMETRI(UPPER(PARAMETRO));

Le relative funzioni per leggere/scrivere i parametri sono:

CREATE OR REPLACE FUNCTION Get_Parameter(
  i_key VARCHAR2,
i_default VARCHAR2 DEFAULT NULL
)
RETURN VARCHAR2
IS
o_value CONFIGURAZIONE.VALORE%TYPE;
BEGIN
-- Se il parametro non esiste o è nullo allora ritorna
-- il valore di default specificato.
SELECT NVL(VALORE, i_default)
INTO o_value
FROM CONFIGURAZIONE
WHERE UPPER(PARAMETRO) = UPPER(i_key);
RETURN o_value;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
  RETURN i_default;
END;
 
CREATE OR REPLACE PROCEDURE Set_Parameter(
i_key VARCHAR2,
i_value VARCHAR2
)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
v_found PARAMETRI.VALORE%TYPE;
BEGIN
-- Test di esistenza
SELECT VALORE
INTO v_found
FROM CONFIGURAZIONE
WHERE UPPER(PARAMETRO) = UPPER(i_key);
-- Aggiornamento
UPDATE CONFIGURAZIONE SET VALORE = i_value WHERE UPPER(PARAMETRO) = UPPER(i_key);
COMMIT;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
  RAISE;
  WHEN OTHERS THEN
  ROLLBACK;
  RAISE;
END;

 

Lascia un commento