You are on page 1of 7

Ing.

de Sistemas e Informtica

Oracle 11g

FUNCIONES DE ORACLE
OPERACIONES CON TIPOS DE DATOS Y FUNCIONES Es posible usar valores numricos, nulos, fechas, caracteres y otras funciones en sentencias y clausulas SQL. Adicionalmente, las funciones de grupo totalizan grupos especficos de registros. Existen en SQL muchas funciones que pueden complementar el manejo de los datos en las consultas. Se utilizan dentro de las expresiones y actan con los valores de las columnas, variables o constantes. Dichas funciones se pueden incluir en las clausulas SELECT, WHERE y ORDER BY. Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de funciones para cada tipo de datos: Aritmticas De Cadena de Caracteres De manejo de Fechas De conversin Otras

FUNCIONES ARITMETICAS Las bases de datos Oracle ofrecen un extenso conjunto de funciones estndar SQL y PL/SQL para manipular nmeros y realizar conversiones entre nmeros y cadenas de caracteres. En este artculo hablaremos sobre las funciones numricas ms comunes y que se tienen que utilizar con mayor frecuencia a la hora de programar en PL/SQL, siendo su conocimiento fundamental para cualquier programador de bases de datos Oracle. Las funciones numricas ejecutan un clculo en base a valores de entrada recibidos como parmetros retornando un valor numrico. Tabla DUAL Es una tabla, creada durante la instalacin, con una sola columna llamada DUMMY y una sola fila de contenido 'X'. El propietario es SYS y puede ser accedida por cualquier usuario. Si ejecutamos: SELECT * FROM DUAL; Devuelve: DUMMY -------X FUNCIN Abs (expresinNumrica): Retornar el valor absoluto de expresinNumrica. Ejemplo: Select abs(-523) from dual En este caso debera retornar 523 FUNCIN Ceil (expresinNumrica): Retorna el entero ms pequeo que es mayor o igual que expresinNumrica. Ejemplo: select Ceil(158.459687) from dual En este caso debera retornar (159) FUNCIN Floor (expresinNumrica): Calcula el valor entero inmediatamente inferior o igual a expresinNumrica. Se usa para generalmente para ejecutar funciones

Curso: Base de Datos

- 1-

Ing. Fabin Silva Alvarado

Ing. de Sistemas e Informtica

Oracle 11g

Ejemplo: select Floor(49.457854) from dual En este caso debera retornar (49) FUNCIN Mod (expresinNumrica1 , expresinNumrica2): Retorna el residuo de la divisin de expresionNumrica1 entre expresionNumrica2. Ejemplo: select Mod(200,52) from dual En este caso debera retornar (44) FUNCIN Power (expresinNumrica, n): Retorna el resultado de elevar expresinNumrica a la potencia n. Ejemplo: select Power(5,4) from dual en este caso debera retornar (625) FUNCIN Round (expresinNumrica, precisin): Retorna el valor de expresinNumrica redondeado a la precisin especificada. Ejemplo: select Round(235.6879,0) from dual en este caso deberia retornar (236) select Round(235.6879,1) from dual en este caso deberia retornar (235.7) select Round(235.6879,2) from dual en este caso deberia retornar (235.69) select Round(235.6879,3) from dual en este caso deberia retornar (235.688) FUNCIN Sqrt (expresinNumrica): Retorna la raz cuadrada de expresionNumrica. ejemplo:select Sqrt(4) from dual en este caso debera retornar (2) FUNCIN Trunc (expresinNumrica[,n]): Trunca expresionNumrica a n lugares decimales. Si no se especifica n trunca a 0 lugares decimales. Si n es negativo trunca a la izquierda del punto decimal. ejemplo: select Trunc(235.6879,0) from dual en este caso deberia retornar (235) select Trunc(235.6879,1) from dual en este caso deberia retornar (235.6) select Trunc(235.6879,2) from dual en este caso deberia retornar (235.68) select Trunc(235.6879,3) from dual en este caso deberia retornar (235.687) FUNCIONES DE CADENA Las funciones de caracteres ejectuan una opreacion sobre una cadena ingresada como parmetro, y devuelven una cadena valor numrico informacin sobre el juego de caractres utilizado. FUNCION ASCII (expresinCadena): Retorna el valor ASCII del caractr ms a la izquierda en expresinCadena. Ejemplo: select ASCII('Hola') from dual Curso: Base de Datos - 2Ing. Fabin Silva Alvarado

Ing. de Sistemas e Informtica

Oracle 11g

En este caso debera retornar (75) FUNCION Chr (expresinEntera): Retorna el carcter ASCII correspondiente a expresinEntera. Ejemplo: select Chr(65) from dual En este caso debera retornar ('A') FUNCION Concat (expresinCadena1, concatenada con expresinCadena2. expresinCadena2): Retorna expresinCadena1

Ejemplo: select Concat('Marco',' Polo') from dual En este caso debera retornar ('Marco Polo') FUNCION Initcap (expresinCadena): Retorna expresinCadena con la inicial de cada palabra en maysculas. Ejemplo: select Initcap('base de datos') from dual en este caso debera retornar ('Base De Datos') FUNCION Instr (expresinCadena1, expresinCadena2 [,n1 [,n2]]): Busca la ocurrencia n2 de expresinCadena2 en expresionCadena1. La bsqueda empieza a partir del carcter en la posicin n1 en expresinCadena1. Ejemplo: select Instr('el murcielago del pielago','el',3,2) from dual en este caso debera retornar (16) FUNCION Length (expresinCadena): Retorna la longitud expresinCadena. Ejemplo: select Length ('Hola Mundo') from dual en este caso deberia retornar (10) FUNCION Lower (expresinCadena): Retorna expresinCadena, pero todo en minsculas. Ejemplo: select Lower ('BASE DE DATOS') from dual en este caso debera retornar ('base de datos') FUNCION Ltrim (expresinCadena1 [, expresionCadena2]): Elimina los espacios a la izquierda de expresinCadena1, retornando la cadena resultante. Si se especifica expresinCadena2, y esta se encuentra al inicio de expresinCadena1, entonces la elimina. Ejemplo 1: select Ltrim(' ALAS PERUANAS') from dual en este caso debera retornar ('ALAS PERUANAS') Ejemplo 2: select Ltrim('ALAS PERUANAS', 'ALAS) from dual en este caso debera retornar(PERUANAS) FUNCION Replace (expresinCadena, anterior, nueva): Reemplaza en expresinCadena todas las ocurrencias de anterior con nueva. Ejemplo: select Replace('BUENAS TARDES','TARDES','NOCHES') from dual en este caso debera retornar ('BUENAS NOCHES') FUNCION Rtrim (expresinCadena1 [, expresionCaden a2]): Elimina los espacios a la derecha de expresinCadena1, retornando la cadena resultante. Si se especifica expresinCadena2, y esta se encuentra al final de expresinCadena1, entonces la elimina. Ejemplo 1: select Ltrim('ALAS PERUANAS ') from dual en este caso debera retornar ('ALAS PERUANAS ')

Curso: Base de Datos

- 3-

Ing. Fabin Silva Alvarado

Ing. de Sistemas e Informtica

Oracle 11g

Ejemplo 2: select Ltrim('ALAS PERUANAS', PERUANAS) from dual en este caso debera retornar(ALAS) FUNCION Substr (expresinCadena, inicio, n): A partir de expresinCadena retorna una subcadena de n caracteres de longitud generada a partir de la posicin inicio. Ejemplo: select Substr(ALAS PERUANAS', 6,8) from dual en este caso debera retornar ('PERUANAS') FUNCION Translate (expresinCadena1, expresinCadena2, expresinCadena3): Reemplaza todas las ocurrencias de expresinCadena2 en expresinCadena1 por expresinCadena3. Ejemplo: select Translate('loca','a','o') from dual en este caso deberia retornar ('loco') FUNCION Trim (LEADING| TRAILING | BOTH caracter FROM expresinCadena3): Elimina todas las ocurrencias de caracter que se encuentra a la izquierda (LEADING) a la derecha (TRAILING) ambos lados (BOTH) DE expresinCadena. Ejemplo 1: select Trim(LEADING 1 from 123454321) from dual en este caso debera retornar (23454321) Ejemplo2: select Trim(TRAILING 6 from 123454321) from dual en este caso debera retornar (12345432) Ejemplo3: select Trim(BOTH 1 from 123454321) from dual en este caso debera retornar (2345432) FUNCION Upper (expresinCadena): Retorna expresinCadena, pero todo en mayscula. Ejemplo: select Upper('base de datos') from dual en este caso debera retornar ('BASE DE DATOS') FUNCIONES DE FECHA Y HORA As como hay funciones para manejo de fechas, tambin se pueden trabajar estas de maneras aritmtica. Ejemplo 1: Sumar 2 das a la fecha actual. (emplear SYSDATE para obtener la fecha del sistema) Select SYSDATE + 2 From Dual;

Debe dar como resultado: 14/10/12


Obtener los das transcurridos entre 2 fechas:

FUNCIN Add_Months Devuelve una fecha incrementada en n meses. La sintaxis es la siguiente: ADD_MONTHS(fecha,n) Ejemplo: Aadir 4 meses a la fecha actual Select add_month(sysdate, 4) from dual; Debe dar como resultado: 12/02/13 Curso: Base de Datos - 4Ing. Fabin Silva Alvarado

Ing. de Sistemas e Informtica

Oracle 11g

FUNCION LAST _DAY Devuelve la fecha del ltimo da del mes de una fecha especificada como parmetro. La sintaxis es la siguiente: Last_day(fecha) Ejemplo: Select last_day (to_date(2012/10/12,yyyy/mm/dd)) from dual;

FUNCION NEXT _DAY Devuelve la fecha del primer da de la semana especificado despus de una fecha especificada como parmetro. La sintaxis es la siguiente: Next_day(fecha, dia_de_semana) Ejemplo: Select Next_day (to_date(2012/10/12,yyyy/mm/dd)) from dual;

Curso: Base de Datos

- 5-

Ing. Fabin Silva Alvarado

Ing. de Sistemas e Informtica

Oracle 11g

SEQUENCIAS Una secuencia es un objeto que permite obtener nmero nico que sigue una determinada formacin.

Sintaxis:
CREATE SEQUENCE nombre_secuencia Opciones; Ejemplo: Crear una secuencia para generar el nmero de departamento, la cual empiece en 10 y se incremente de 2 en dos hasta llegar a 999 CREATE SEQUENCE nombre_secuencia INCREMENT BY <valor> START WITH <valor> MAXVALUE <valor> NOCYCLE NOCACHE

PROCEDIMIENTOS ALMACENADOS Un procedimiento es un subprograma que ejecuta una accin especfica y que no devuelve ningn valor. Un procedimiento tiene un nombre, un conjunto de parmetros (opcional) y un bloque de cdigo. La sintaxis de un procedimiento almacenado es la siguiente: CREATE [OR REPLACE] PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT] <type>, <param2> [IN|OUT|IN OUT] <type>, ...)] IS -- Declaracion de variables locales BEGIN -- Sentencias [EXCEPTION] -- Sentencias control de excepcion END [<procedure_name>];

El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el procedimiento existe, se producir, un error. La sintaxis es muy parecida a la de un bloque annimo, salvo porque se reemplaza la seccion DECLARE por la secuencia PROCEDURE ... IS en la especificacin del procedimiento. Debemos especificar el tipo de datos de cada parmetro. Al especificar el tipo de dato del parmetro no debemos especificar la longitud del tipo. Los parmetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada. CREATE OR REPLACE PROCEDURE Actualiza_Saldo (cuenta NUMBER, new_saldo NUMBER) IS -- Declaracion de variables locales Curso: Base de Datos - 6Ing. Fabin Silva Alvarado

Ing. de Sistemas e Informtica

Oracle 11g

BEGIN -- Sentencias UPDATE SALDOS_CUENTAS SET SALDO = new_saldo, FX_ACTUALIZACION = SYSDATE WHERE CO_CUENTA = cuenta; END Actualiza_Saldo; Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo. Si el sistema nos indica que el procedimiento se ha creado con errores de compilacin podemos ver estos errores de compilacion con la orden SHOW ERRORS en SQL *Plus. Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de ejecutarlo (en realidad es vlido para cualquier subprograma). Estas son: Notacin posicional: Se pasan los valores de los parmetros en el mismo orden en que el procedure los define. BEGIN Actualiza_Saldo(200501,2500); END; Notacin nominal: Se pasan los valores en cualquier orden nombrando explicitamente el parmetro. BEGIN Actualiza_Saldo(cuenta => 200501,new_saldo => 2500); END; CREACION DE PROCEDIMIENTOS ALMACENADOS. A continuacin empleando una Hoja de Trabajo de SQL, elegimos la conexin activa

Curso: Base de Datos

- 7-

Ing. Fabin Silva Alvarado

You might also like