Ing.

de Sistemas e Informática Oracle 11g FUNCIONES DE ORACLE OPERACIONES CON TIPOS DE DATOS Y FUNCIONES Es posible usar valores numéricos, nulo s, fechas, caracteres y otras funciones en sentencias y clausulas SQL. Adicional mente, las funciones de grupo totalizan grupos específicos de registros. Existen e n SQL muchas funciones que pueden complementar el manejo de los datos en las con sultas. Se utilizan dentro de las expresiones y actúan con los valores de las colu mnas, variables o constantes. Dichas funciones se pueden incluir en las clausula s SELECT, WHERE y ORDER BY. Pueden anidarse funciones dentro de funciones. Y exi ste una gran variedad de funciones para cada tipo de datos: Aritméticas De Cadena de Caracteres De manejo de Fechas De conversión Otras FUNCIONES ARITMETICAS Las bases de datos Oracle ofrecen un extenso conjunto de f unciones estándar SQL y PL/SQL para manipular números y realizar conversiones entre números y cadenas de caracteres. En este artículo hablaremos sobre las funciones numér icas más comunes y que se tienen que utilizar con mayor frecuencia a la hora de pr ogramar en PL/SQL, siendo su conocimiento fundamental para cualquier programador de bases de datos Oracle. Las funciones numéricas ejecutan un cálculo en base a val ores de entrada recibidos como parámetros retornando un valor numérico. Tabla DUAL E s una tabla, creada durante la instalación, con una sola columna llamada DUMMY y u na sola fila de contenido 'X'. El propietario es SYS y puede ser accedida por cu alquier usuario. Si ejecutamos: SELECT * FROM DUAL; Devuelve: DUMMY -------X FUN CIÓN Abs (expresiónNumérica): Retornar el valor absoluto de expresiónNumérica. Ejemplo: Se lect abs(-523) from dual En este caso debería retornar 523 FUNCIÓN Ceil (expresiónNuméri ca): Retorna el entero más pequeño que es mayor o igual que expresiónNumérica. Ejemplo: select Ceil(158.459687) from dual En este caso debería retornar (159) FUNCIÓN Floor (expresiónNumérica): Calcula el valor entero inmediatamente inferior o igual a expre siónNumérica. Se usa para generalmente para ejecutar funciones

Curso: Base de Datos - 1Ing. Fabián Silva Alvarado

1) from dual en este caso deberia retornar (235. FUNCION ASCI I (expresiónCadena): Retorna el valor ASCII del caractér más a la izquierda en expresión Cadena.6879.687) FUNCIONES DE CADENA Las funciones de caracteres ejectuan una opreacion sobre una cadena ingresada como parámetro. Ejemplo: select ASCII('Hola') from dual Curso: Base de Datos .0) from dual en este caso deberia retornar (235) select Trunc(235.0) from dual en este caso deberia retornar (236) select Round(235.6879.4) from dual e n este caso debería retornar (625) FUNCIÓN Round (expresiónNumérica.2Ing. Ejemplo: select R ound(235.2) from dual en este caso deberia retornar (235.688) FUNCIÓN Sqrt (expresiónNumérica): Retorna la raíz cuadrada de expresionNumérica. de Sistemas e Informática Oracle 11g Ejemplo: select Floor(49. Si n es negativo trunca a la izquierda del punto decimal.69) select Round(235.52) from dual En es te caso debería retornar (44) FUNCIÓN Power (expresiónNumérica.68) select Trunc(235. Ejemplo: select Mod(200.6879.6879 .1) from dual en este caso deberia retornar (235. Fab ián Silva Alvarado . precisión): Retorna e l valor de expresiónNumérica redondeado a la precisión especificada. expresiónNumérica2): Retorna el residuo de la división de expr esionNumérica1 entre expresionNumérica2.2) from dual en este caso deberia retornar (235. y devuelven una cadena ó valor numérico ó información sobre el juego de caractéres utilizado.3) from dual en este caso deberia retornar (235. ejemplo:select Sqrt(4) from dual en este cas o debería retornar (2) FUNCIÓN Trunc (expresiónNumérica[.457854) from dual En este caso debería retornar (49) FUNC IÓN Mod (expresiónNumérica1 . Ejemplo: select Power(5.Ing.n]): Trunca expresionNumérica a n lugares decimales. ejemplo: select Trunc(235.7) select Round(235. 6879.6879. n): Retorna el resultado de elevar expresiónNumérica a la potencia n.3) from dual en este caso deberia retornar (235.6879.6) select Trunc(235. Si no se especifica n trunca a 0 lugares decimales.6879.

La búsqueda empieza a partir del carácter en la posición n1 en expresiónCaden a1. anterior. pero todo en minúsculas. Si se especifica expresiónCadena2. Si se especifica expresiónCadena2. nueva): Reemplaza en expresiónCadena todas las ocurrenc ias de anterior con nueva. entonces la elimina. expresionCadena2] ): Elimina los espacios a la izquierda de expresiónCadena1. y esta se encuentra al inicio de exp resiónCadena1.'el'.3Ing. de Sistemas e Informática Oracle 11g En este caso debería retornar (75) FUNCION Chr (expresiónEntera): Retorna el carácter ASCII correspondiente a expresiónEntera. retornando la cadena r esultante. Ejemplo: select Replace('BUENAS TARDES'.'NOC HES') from dual en este caso debería retornar ('BUENAS NOCHES') FUNCION Rtrim (exp resiónCadena1 [.' Polo') from dual En este caso debería retornar (' Marco Polo') FUNCION Initcap (expresiónCadena): Retorna expresiónCadena con la inici al de cada palabra en mayúsculas. entonces la elimina.n1 [. Fabián Silva Alvarado . Ejemplo 1: select Ltrim(' ALAS PERUANAS') from dual en este caso debería retornar ('ALAS PERUANAS') Ejemplo 2: select Ltrim('ALA S PERUANAS'. concatenada con expre siónCadena2.n2]]): Busca la ocurrencia n2 de expresiónCadena2 en expresi onCadena1. Ejemplo: select Length ('Hola Mundo') from dual en este caso deber ia retornar (10) FUNCION Lower (expresiónCadena): Retorna expresiónCadena. Ejemplo: select Lower ('BASE DE DATOS') from dual en este caso deb ería retornar ('base de datos') FUNCION Ltrim (expresiónCadena1 [. expresionCaden a2]): Elimina los espacios a la derecha de expresión Cadena1. retornando la cadena resultante. Ejemplo: select Initcap('base de datos') from du al en este caso debería retornar ('Base De Datos') FUNCION Instr (expresiónCadena1.Ing. Ejemplo: select Instr('el murcielago del pielago'.2) from dual en est e caso debería retornar (16) FUNCION Length (expresiónCadena): Retorna la longitud e xpresiónCadena. expresiónCadena2 [. Ejemplo: select Chr(65) from dual En este caso debería retornar ('A') FUNCION Concat (expresiónCadena1. expresiónCadena2): Retorna expresiónCadena1 Ejemplo: select Concat('Marco'.3. Ejemplo 1: selec t Ltrim('ALAS PERUANAS ') from dual en este caso debería retornar ('ALAS PERUANAS ') Curso: Base de Datos . y est a se encuentra al final de expresiónCadena1. 'ALAS’) from dual en este caso debería retornar(‘PERUANAS’) FUNCION Replace (expresiónCadena.'TARDES'.

Ejemplo: select Translate('loca'. de Sistemas e Informática Oracle 11g Ejemplo 2: select Ltrim('ALAS PERUANAS'.'o') from dual en este c aso deberia retornar ('loco') FUNCION Trim (LEADING| TRAILING | BOTH caracter FR OM expresiónCadena3): Elimina todas las ocurrencias de caracter que se encuentra a la izquierda (LEADING) ó a la derecha (TRAILING) ó ambos lados (BOTH) DE expresiónCad ena. pero todo en mayúscula. Debe dar como resultado: 12/02/13 Curso: Base de D atos . Ejemplo 1: Sumar 2 días a la fecha actual. 6. ‘PERUANAS’) from dual en este caso debería re tornar(‘ALAS’) FUNCION Substr (expresiónCadena. Fabián Silva Alvarado .Ing. Ejemplo: select Substr(‘ALAS PERUANAS'. Debe dar como resultado: 14/10/12 Obtener los días transcurridos entre 2 fechas: FUNCIÓN Add_Months Devuelve una fecha incrementada en n meses.4Ing. (emplear SYS DATE para obtener la fecha del sistema) Select SYSDATE + 2 From Dual. inicio. expresiónCadena2. Ejemplo 1: select Trim(LEADING 1 from 123454321) from dual en este caso deb ería retornar (23454321) Ejemplo2: select Trim(TRAILING 6 from 123454321) from dua l en este caso debería retornar (12345432) Ejemplo3: select Trim(BOTH 1 from 12345 4321) from dual en este caso debería retornar (2345432) FUNCION Upper (expresiónCade na): Retorna expresiónCadena. n): A partir de expresiónCadena retorna una subcadena de n caracteres de longitud generada a partir de la posición inicio.n) Ejemplo: Añadir 4 meses a la fecha actual Select add _month(sysdate. La sintaxis es la s iguiente: ADD_MONTHS(fecha. también se pueden trabajar estas de maneras aritmética. 4) from dual. expres iónCadena3): Reemplaza todas las ocurrencias de expresiónCadena2 en expresiónCadena1 p or expresiónCadena3.8) from dual en este caso debería retornar ('PERUANAS') FUNCION Translate (expresiónCadena1. Ejemplo: select Upper('base de datos') from dual en este caso debería retornar ('BASE DE DATOS') FUNCIONES DE FE CHA Y HORA Así como hay funciones para manejo de fechas.'a'.

Ing.’yyyy/mm/dd’)) from dual.’yyyy/mm/dd’)) from dual. La sintaxis es la siguiente: Next_day(f echa.5Ing. La sintaxis es la siguiente: Last_day(fecha) Ejemplo: Select last _day (to_date(‘2012/10/12’. dia_de_semana) Ejemplo: Select Next_day (to_date(‘2012/10/12’. de Sistemas e Informática Oracle 11g FUNCION LAST _DAY Devuelve la fecha del último día del mes de una fecha especificada como parámetro. Curso: Base de Datos . Fabián Silva Alvarado . FUNCION NEXT _DAY Devuelve la fecha del primer día de la semana especificado después de una fecha especificada como parámetro.

6Ing.. <param2> [IN|OUT|IN OUT] <type>. La sintaxis es muy parecida a la de un bloque anónimo.D eclaracion de variables locales BEGIN -. IS en la especificación del procedimiento. la cual empiece en 10 y se incremente de 2 en dos hasta llegar a 999 CREATE SEQUENCE nombre_secuencia INCREMENT BY <valor> START W ITH <valor> MAXVALUE <valor> NOCYCLE NOCACHE PROCEDIMIENTOS ALMACENADOS Un procedimiento es un subprograma que ejecuta una ac ción específica y que no devuelve ningún valor.Declaracion de va riables locales Curso: Base de Datos . de salida (OUT) o de entrada salida (IN OUT).Sentencias [EXCEPTION] -. new_saldo NUMBER) IS -. salvo porque se reemplaza la seccion DECLARE por la se cuencia PROCEDURE . un error. se producirá. Si se omi te. Debemos especific ar el tipo de datos de cada parámetro.Ing. de Sistemas e Informática Oracle 11g SEQUENCIAS Una secuencia es un objeto que permite obtener número único que sigue una determinada formación. y se toma ese valor en caso de que no especifiquemos nada. Los parámetros pueden ser de entrada (IN). CREATE OR REPLACE PRO CEDURE Actualiza_Saldo (cuenta NUMBER. Ejemplo: Crear una secuencia para gen erar el número de departamento. Un procedimiento tiene un nombre.)] IS -. El valor por defecto es IN. Sintaxis: CREATE SEQUENCE nombre_secuencia Opciones... Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo. El uso de OR REPLACE permite sobreescribir un procedimiento existente. La sintaxis de un procedimie nto almacenado es la siguiente: CREATE [OR REPLACE] PROCEDURE <procedure_name> [ (<param1> [IN|OUT|IN OUT] <type>.. Fabián Silva Alvarado . . y el procedimiento existe.Sentencias co ntrol de excepcion END [<procedure_name>]. un c onjunto de parámetros (opcional) y un bloque de código.

Estas son: Notación posicional: Se pasan los valores de los parámetros en el mismo orden en que el procedure los define. BEGIN Actualiza_Saldo(cuenta => 200501. Fabián Silva Alvarado .Sentencias UPDATE SALDOS_CUENTAS SET SALDO = new_saldo. END. CREACION DE PROCEDIMIENTOS ALMACENADOS. Si el sistema nos indica q ue el procedimiento se ha creado con errores de compilación podemos ver estos erro res de compilacion con la orden SHOW ERRORS en SQL *Plus. END. Notación nominal: Se pasan los valores en c ualquier orden nombrando explicitamente el parámetro. Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de ejecutarlo (en reali dad es válido para cualquier subprograma). de Sistemas e Informática Oracle 11g BEGIN -. END Actualiza_Saldo. FX_ACTUALIZACIO N = SYSDATE WHERE CO_CUENTA = cuenta. BE GIN Actualiza_Saldo(200501.Ing.7Ing. Una vez creado y comp ilado el procedimiento almacenado podemos ejecutarlo.new_saldo => 2500). elegimos la conexión activa Curso: Base de Datos .2500). A co ntinuación empleando una Hoja de Trabajo de SQL.