Entradas

Mostrando entradas de marzo, 2008

COALESCE

Devuelve la primera expresión distinta de NULL entre sus argumentos. Sintaxis COALESCE ( expression [ ,...n ] ) Argumentos expression: Es una expresión de cualquier tipo. Tipos de valor devueltos Devuelve el tipo de datos de expression con la precedencia de tipo de datos más alta. Nota: Si todos los argumentos son NULL , COALESCE devuelve NULL . Al menos uno de los valores NULL debe ser NULL con tipo. COALESCE (expression1,...n) es equivalente a esta función CASE : CASE WHEN (expression1 IS NOT NULL) THEN expression1 ... WHEN (expressionN IS NOT NULL) THEN expressionN ELSE NULL END ISNULL y COALESCE , aunque son equivalentes, pueden comportarse de forma diferente. Una expresión que contenga ISNULL con parámetros diferentes de NULL se considera que es NOT NULL , mientras que las expresiones que contienen COALESCE con parámetros que son diferentes de NULL se consideran NULL . En este ejemplo, la tabla pruebas incluye tres columnas con información acerca del sueldo anual d

Bloqueo Base de Datos

ORACLE usa automáticamente diferentes tipos de bloqueos para el control del acceso concurrente a los datos y prevenir la interacción destructiva entre usuarios. Bloquea automáticamente los datos fuente durante la transacción para evitar que otras transacciones hagan algo requiriendo acceso exclusivo de los mismos datos fuente. Oracle clasifica los bloqueos en estas categorías: ·Data Locks (DML Locks) El Data Locks protege los datos (Table Locks: protege la tabla entera, Row Locks a nivel de filas). ·Dictionary Locks (DDL Locks) Protege la estructura de los objetos, las definiciones de las tablas y de las vistas. ·Internal Locks and Latches Protege las estructuras internas de la base de datos como los archivos de datos. Son totalmente automáticos. ·Distributed Locks Aseguran que los datos y otras fuentes distribuidas entre varias instancias del servidor en paralelo de Oracle sean consistentes. ·Parallel ce management (PCM) locks Son bloqueos distribuidos que cubren uno o más bloques

Consultas jerarquicas

Imagen
En algunas ocasiones, es necesario recuperar los datos de una tabla cuya relación es recursiva, para mostrar pertenencias y/o jerarquías. Tales jerarquías generalmente son representadas a través de estructuras tipo árbol, en donde la raíz (o nodo principal) tiene ramas (nodos descendientes) y cada una de estas ramas puede a su vez generar más ramas, hasta llegar a un punto final en donde no hay mas divisiones. Esos nodos terminales son pues llamados también hojas. Para el ejemplo, supongamos que se tiene una tabla donde se tiene almacenados los datos familiares de personas en una tabla como la siguiente: idPersona Nombres hijoDe 1 Juan Carlos 2 Luis 5 3 Pedro 5 4 Jaime Alberto 9 5 Olga María 1 6 Marta Edith 8 7 Lucía 9 8 Nelly 1 9 Felipe 8 10 Edgar Nelson 8 La anterior tabla, almacena los datos acerca de los padres de cada persona. De esta manera, es posible construir un árbol como el siguiente:

bulk insert

Uno de los muchos mitos en oracle es que el uso de cursores perjudica seriamente el rendimiento. El impacto sobre el rendimiento es cierto en parte, ya que el servidor trata individualmente cada registro y, por tanto, esto debería implementarse únicamente cuando fuera estrictamente necesario (sql dinámico, iteraciones dentro del fetch, etc.) utilizando, siempre que sea posible, SQL estándar. No obstante, hay situaciones en las que no es posible el uso de SQL convencional. Por ejemplo, cuando en una inserción es preciso controlar los errores e insertarlos en otra tabla. Ante este caso, los procedimientos ETL filtran previamente las filas, las mueven a otra tabla, y cuando las filas ya están totalmente “limpias” de errores, entonces realizan INSERT INTO tabla SELECT * … Oracle, a partir de la versión 9i, dispone de la funcionalidad de BULK sql, es decir, tratamiento de conjuntos de filas “a montón”. Realizar bulk inserts puede resultar muy práctico en el caso anterior, ya que la