Imaginemos que se quiere saber si en un campo VARCHAR2 tiene valores sólo numéricos. Lo primero que se nos ocurre es:
La función devuelve un varchar para poder ser usada en una select. Esta select me daría los valores no numéricos de una columna:
Pero si usamos EXPRESIONES REGULARES podemos optimizar el código. Podría haber optado por hacer un bloque de pl/sql anónimo, pero he preferido buscar algo más directo y lo he encontrado. Las expresiones regulares están disponibles en la 10g y permiten hacer búsquedas de una manera parecida al like pero más potente. Además de permitir búsquedas, también se pueden hacer potentes replaces y substrs. Por ejemplo, esta select me saca los valores de una columna que no son números enteros:
|
EXPRESIONES REGULARES EN ORACLE
VISTAS MATERIALIZADAS
REFRESH FORCE:
Con este método se indica que si es posible se utilice el metodo FAST, y si no el COMPLETE.
|
USO CORRECTO DEL TIPO CLOB
Como la mayoría de lenguajes de programación, PL/SQL tiene limitaciones de capacidad en los tipos de variable más típicos. Como ejemplo mencionar el VARCHAR2, que puede almacenar hasta 32K de información. La solución, cuando se va a sobrepasar este límite, es utilizar el tipo de datos CLOB. Entonces, ¿Por qué no nos curamos en salud y utilizamos siempre el tipo de datos CLOB? Vemos un ejemplo típico
Funcionalmente, lo anterior es perfecto, pero el coste es altísimo. La concatenación de CLOB’s es muy costosa en comparación con el resto de operaciones. Así, la utilización de un “buffer” o variable VARCHAR2 en la cual vayamos almacenando los resultados intermedios ahorra más coste. Es decir, es mejor acumular la información en un VARCHAR2 y sólo volcarla en CLOBs cuando sea estrictamente necesario:
|
RECICLADO DE TABLAS ORACLE. RECUPERACIÓN
Horror!!! hemos eliminado una tabla de la base de datos que contenía datos importantes.
Antes de buscar información sobre como alistarse en la legión extranjera vamos a realizar una consulta:
Si encontramos nuestra tabla en uno de los registros, no todo está perdido. Podemos recuperarla con la instrucción flashback (la segunda línea recupera la tabla, pero con otro nombre):
|