Archive for the ‘Oracle’ Category
Query SQL que devuelve todos los días de un determinado mes
Saturday, March 31, 2012 17:25 No CommentsSELECT TRUNC (SYSDATE, ‘MON’)+rownum-1 AS dias_del_mes FROM DUAL WHERE to_char(SYSDATE,’MON’)=to_char(TRUNC (SYSDATE, ‘MON’)+rownum-1,’MON’) CONNECT BY LEVEL <= 31 Lo que nos devolverá : dias_del_mes ———– 01-MAR-2012 02-MAR-2012 ……….. ……….. ……….. 30-MAR-2012 Si queremos reemplezar SYSDATE por otra fecha, la query quedaría de la siguiente manera: SELECT TO_DATE (’01-’ || ‘&Month’ || ‘-’ || ‘&year’, ‘DD-MON-YYYY’)+ LEVEL- [...]
Arrancar ODI Studio en Linux
Friday, March 16, 2012 13:11 No CommentsLos desarrolladores y administradores utilizan Oracle Data Integrator (ODI) Studi para acceder a los Repositorios ODI (Master y Work Repository). Siempre que he utilizado ODI ha sido bajo una instalación en Windows. Hoy he realizado la instalación en una máquina Linux y no encontraba el ejecutable. Para lanzar el ODI Studio en Linux, simplemente tendremos [...]
Formatear minutos en HH:MM:SS desde PL/SQL
Sunday, February 26, 2012 18:15 No CommentsImaginemos que queremos mostrar el número de minutos que ha durado una llamada en el formato HH:MM:SS, para ello nada más sencillo que realizar la siguiente query: SELECT to_char(trunc(sysdate)+N/24/60/60,’HH24:MI:SS’) FROM dual; Donde N es el número de minutos que queremos formatear. El resultado de una llamada que durase 156 minutos sería el siguiente: >>select to_char(trunc(sysdate)+156/24/60/60,’HH24:MI:SS’) [...]
Buscar código en vistas de Oracle con PL/SQL
Thursday, February 23, 2012 13:56 No CommentsDECLARE lncount NUMBER; lvsearch VARCHAR2(100) := lower(’cadena_buscar’); CURSOR cur_views IS SELECT * FROM all_views t where view_name like ‘XX%’; lrow_views cur_views%ROWTYPE; v_line VARCHAR2(30000); BEGIN lncount := 0; OPEN cur_views; LOOP BEGIN FETCH cur_views INTO lrow_views; EXIT WHEN cur_views%NOTFOUND; –Convert LONG to VARCHAR2 v_line := substr(lrow_views.text, 1, 30000); IF v_line LIKE [...]
Obtener el mail de una cadena de texto en PL/SQL
Wednesday, February 22, 2012 14:10 No Comments– Proposito : Devuelve un email dentro de una cadena de texto. ——————————————————————————- FUNCTION get_email_from_texto (v_texto IN VARCHAR2) RETURN VARCHAR2 IS v_email VARCHAR2(500); BEGIN SELECT REGEXP_SUBSTR(v_texto,’([a-zA-Z0-9_+*$%\^&!\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9:]{2,4})+’) INTO v_email FROM dual; RETURN v_email; EXCEPTION WHEN OTHERS THEN RETURN NULL; END;
Obtener la enésima fila de una tabla en Oracle
Tuesday, February 21, 2012 19:46 No CommentsA veces queremos poder recuperar la enésima fila de una consulta. Una posible opción sería la siguiente: SELECT rn, columna FROM ( SELECT rownum rn, columna FROM tabla ) WHERE rn=N; Esta no es la única, ni la mejor solución. Aquí hay un debate con otro tipo de soluciones a esta consulta que puede que [...]
ORA-06508 PL/SQL: could not find program unit being called
Monday, January 2, 2012 14:42 No CommentsCuando buscas este error en internet, encontrarás la siguiente información: Causa: Se ha realizado una llamada a un procedimiento que no ha podido ser localizado. El programa puede haber sido borrado, modificado, o haberse compilado con errores. Acción: Chequea que todos los programas referenciados, incluyendo los cuerpos de los paquetes, existen y son válidos. A [...]
Cómo ejecutar sentencias DDL dentro un trigger de Oracle
Sunday, January 1, 2012 18:41 No CommentsSi necesitas realizar un COMMIT, un SAVEPOINT, una sentecia DDL (create, alter, …) dentro de un trigger lo más seguro es que recibas algún mensaje de error. Nada tan sencillo como utilizar la sentencia PRAGMA AUTONOMOUS_TRANSACTION para que la ejecución funcione perfectamente. Un ejemplo de la sintaxis: CREATE OR REPLACE TRIGGER XX_TRIGGERNAME_BIR BEFORE INSERT ON [...]
El desconocido campo Boundfiller de SQL*Loader
Saturday, July 16, 2011 15:02 No CommentsDurante estos días me he vuelto a pelear con la herramienta SQL*Loader y os traigo un truquito que os puede ser muy útil y del cual he visto poca documentación. Necesitaba concatenar varias columnas de un CSV en un único campo de una tabla. Una opción válida podría ser cargar todos las columnas del CSV [...]
Saltar campos a la hora de cargar un CSV con SQL Loader
Thursday, July 7, 2011 22:04 1 CommentSi por ejemplo tenemos un fichero CSV con 10 campos, de los cuales solo queremos cargar 2, los que se encuentran en la columna 2 y 4, nuestro aliado será la claúsula FILLER: CREATE TABLE PRUEBA_TABLA ( columna1 VARCHAR(10), columna2 VARCHAR2(50) ); Nuestro CTL (fichero de control) quedaría por tanto de la siguiente manera: […] [...]