create or replace FUNCTION pa_ObtenerValorConstante (p_constante IN VARCHAR2) RETURN VARCHAR2 IS v_Dummy PA_detalle_constantes.valor%TYPE; PROCEDURE RegistrarConstante (p_constante IN VARCHAR2, p_valor IN VARCHAR2) IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO pa_detalle_constantes (des_constante, valor) VALUES (p_constante, p_valor); COMMIT; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END RegistrarConstante; BEGIN SELECT valor INTO v_Dummy FROM pa_detalle_constantes WHERE des_constante = p_constante; RETURN v_Dummy; EXCEPTION WHEN NO_DATA_FOUND THEN EXECUTE IMMEDIATE ('begin :1 := ' || p_constante || '; end;') USING IN OUT v_Dummy; RegistrarConstante (p_constante, v_Dummy); RETURN v_Dummy; END pa_ObtenerValorConstante;
Ejemplo: select pa_ObtenerValorConstante ('CONSTANTE') from dual;